gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 07:45:42 24 4
gpt4 key购买 nike

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

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com