gpt4 book ai didi

python - 从元组列表创建一个 dic,其中键采用 python3 中所有可用值的列表

转载 作者:太空宇宙 更新时间:2023-11-04 00:50:15 26 4
gpt4 key购买 nike

这是我的代码:

mylist=[('joe',120),('john',160),('abraham',250),('soo',250)]

dic={}

for i in mylist:
if i[1] in dic:
dic[i[1]].append(i[0])
else:
dic[i[1]]=i[0]
print(dic)

我希望:

dic={'120':['joe'], '160':['john'], '250':['abraham','soo']}

但是我得到这个错误:

    dic[i[1]].append(i[0])
AttributeError: 'str' object has no attribute 'append'

最佳答案

i[1]不在字典中时,需要创建一个列表对象。相反,您只是将字符串分配给该键:

dic[i[1]]=i[0]

如果您将其包装在一个列表中,则显示您的代码有效:

dic[i[1]] = [i[0]]  # a list with i[0] as the only element

您可以使用元组解包使您的代码更具可读性:

for name, value in mylist:
if value in dic:
dic[value].append(name)
else:
dic[value] = [name]

如果您使用了 dict.setdefault() method如果 key 已经存在,您可以取消测试:

for name, value in mylist:
dic.setdefault(value, []).append(name)

这里,如果字典中不存在键,dict.setdefault() 会将值设置为一个空列表,这样 .append()通话将始终有效。

另一种选择是使用 collections.defaultdict() object ;这需要一个工厂,该工厂将为您尝试访问它们时不存在的键生成一个新值;将工厂设置为 list 以获得相同的结果:

from collections import defaultdict

dic = defaultdict(list)

for name, value in mylist:
dic[value].append(name)

关于python - 从元组列表创建一个 dic,其中键采用 python3 中所有可用值的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37452089/

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