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

标签 python list dictionary indexing equals

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

在下面(这显然是一个微不足道的情况)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)

关于python - 如何让 Python 区分相等的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8537167/

相关文章:

python - 通过从另一个字典获取一个字典的值时获取 Keyerror

Python - 检查元组列表中的项目组合

python - 使用redis_om(python)覆盖redis上的信息

python - 限制使用 tkFileDialog.asksaveasfile 时保存的文件扩展名

c# - 以字符串格式对日期列表进行排序

json - 将字典转换为 JSON

swift - 如何在 Swift 中实现双向映射?

Python:使用 .find() 而不是 .split()

python - 索引错误异常

arrays - 有没有办法衡量列表的排序情况?