Skip to main content
 首页 » 编程设计

python之如何让 Python 区分相等的整数

2025年05月04日17insus

在区分相同的整数时遇到一些问题。

在下面(这显然是一个微不足道的情况)a、b、c 是整数。我想创建一个字典,字典,其中将包含 {a: 'foo', b: 'bar', c: 'baz'}

diction = {}  
for i in (a, b, c): 
    j = ('foo', 'bar', 'baz')[(a, b, c).index(i)] 
    diction[i] = j 

所有运行都非常好,直到例如 a 和 b 相同:第三行将为 a 和 b 提供索引 0,导致每种情况下的 j = 'foo'。

我知道列表可以被复制

list_a = [1, 2, 3] 
list_b = list(list_a) 

或

list_b = list_a[:] 

那么,有什么办法可以用我的相同整数来做到这一点吗?

(我试着让一个 float ,但值保持不变,所以这不起作用。)

请您参考如下方法:

要从两个不同的可迭代对象创建字典,您可以使用以下代码:

d = dict(zip((a, b, c), ('foo', 'bar', 'baz'))) 

其中 zip 用于将两个可迭代对象合并到一个元组列表中,该列表可以传递给字典构造函数。

请注意,如果 a==b,则 'foo' 将被 'bar' 覆盖,因为值已添加以相同的顺序添加到字典中,就像您使用此代码一样:

d[a] = 'foo' 
d[b] = 'bar' 
d[c] = 'baz' 

这只是字典的标准行为,当一个新值分配给一个已知的键时,该值将被覆盖。

如果您希望将所有值保存在一个列表中,那么您可以使用 collections.defaultdict,如下所示:

from collections import defaultdict 
 
d = defaultdict(list) 
for key, value in zip((a, b, c), ('foo', 'bar', 'baz')): 
    d[key].append(value)