gpt4 book ai didi

python - 在字典中为一个键存储多个值

转载 作者:太空宇宙 更新时间:2023-11-03 13:42:19 25 4
gpt4 key购买 nike

我有一个数据列表,它有两个值:

a    12
a 11
a 5
a 12
a 11

我想使用字典,这样我就可以得到每个键的值列表。第 1 列可能有不同的条目,例如 'b',因此我可以根据第 1 列作为键来排列数据,而第 2 列是每个键的数据

[a:12,11,5]

我如何实现这一点?据我了解,如果 2 个值具有相同的键,则最后一个值会覆盖前一个值,因此字典中只有一个键。

d={}
for line in results:
templist=line.split(' ')
thekey=templist[0]
thevalue=templist[1]

if thevalue in d:
d[thekey].append(thevalue)
else:
d[thekey]=[thevalue]

我是不是用错误的方式解决了问题?

最佳答案

Python 字典的一个键只能有一个值,因此您不能以您尝试的方式分配多个值。

相反,将多个值存储在与键对应的列表中以便列表成为与键对应的一个值:

d = {}
d["a"] = []
d["a"].append(1)
d["a"].append(2)

>>> print d
{'a': [1, 2]}

您可以使用 defaultdict为了简化这一点,如果 key 不存在,它将初始化 key ,如下所示:

from collections import defaultdict
d = defaultdict(list)
d["a"].append(1)
d["a"].append(2)

>>> print d
defaultdict(<type 'list'>, {'a': [1, 2]})

如果您不希望某个键有重复值,您可以使用集合而不是列表。但请注意 set 是无序的。

from collections import defaultdict
d = defaultdict(set)
d["a"].add(1)
d["a"].add(2)
d["a"].add(1)

>>> print d
defaultdict(<type 'set'>, {'a': set([1, 2])})

如果需要保持顺序,要么在运行时使用sorted,要么使用list使用 if 子句检查值

from collections import defaultdict
d = defaultdict(list)
for item in (1, 2, 1, 2, 3, 4, 1, 2):
if item not in d["a"]:
d["a"].append(item)

>>> print d
defaultdict(<type 'list'>, {'a': [1, 2, 3, 4]})

关于python - 在字典中为一个键存储多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28390941/

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