Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:如果项等于键,如何将列表项追加到字典中?_Python_Dictionary - Fatal编程技术网

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]}
,这是否回答了您的问题?请不要只发布代码作为答案,还要解释代码的作用以及它是如何解决问题的。带有解释的答案通常质量更高,更容易吸引选票。