Python:如果项等于键,如何将列表项追加到字典中?
我试图遍历一个列表,如果列表项等于字典键,则将列表项附加到字典中Python:如果项等于键,如何将列表项追加到字典中?,python,dictionary,Python,Dictionary,我试图遍历一个列表,如果列表项等于字典键,则将列表项附加到字典中 mylist = [1, 2, 3] mydict = dict.fromkeys(mylist, []) for item in mylist: for key in mydict: if key == item: mydict[key].append(item) print(mydict) 输出: {1: [1, 2, 3], 2: [1, 2, 3], 3: [1, 2
mylist = [1, 2, 3]
mydict = dict.fromkeys(mylist, [])
for item in mylist:
for key in mydict:
if key == item:
mydict[key].append(item)
print(mydict)
输出:
{1: [1, 2, 3], 2: [1, 2, 3], 3: [1, 2, 3]}
所需输出:
{1: [1], 2: [2], 3: [3]}
非常感谢 这是因为:
mydict = dict.fromkeys(mylist, [])
mydict
的值将是相同的对象[]
,因此当您附加到mydict[something]
时,无论something
是什么,您都将附加到相同的列表
所有值都是同一个对象,您向其添加三个数字=>所有值都显示为同一个列表
要避免此情况,请为每个键指定新列表:
mydict = {}
for item in mylist:
mydict.setdefault(item, []).append(item)
或者,你知道:
mydict = {key: [key] for key in mylist}
这是你想要的吗
mylist = [1,2,3,3]
mydict = {}
for item in mylist:
if item not in mydict:
mydict[item] = [item]
else:
mydict[item].append(item)
print(mydict)
它将使用以下命令输出:{1:[1],2:[2],3:[3,3]}
:
mylist = [1, 2, 3]
mydict = dict.fromkeys(mylist, [])
for item in mylist:
for key in mydict:
if key == item:
mydict[key] = [item]
print(mydict)
mylist = [1, 2, 3]
mydict = dict.fromkeys(mylist, [])
您正在创建一个dict,该dict将mylist
中的所有元素作为键,并且dict中的所有值都是对同一列表的引用,要修复此问题,您可以使用:
mydict = dict.fromkeys(mylist)
for item in mylist:
mydict[item] = [item]
print(mydict)
输出:
{1: [1], 2: [2], 3: [3]}
同样的事情,但通过使用字典理解以更高效和紧凑的形式:
mydict = {item: [item] for item in mylist}
如果
mylist=[1,2,3,3]
,mydict={1:[1],2:[2],3:[3,3]}
,这是否回答了您的问题?请不要只发布代码作为答案,还要解释代码的作用以及它是如何解决问题的。带有解释的答案通常质量更高,更容易吸引选票。