繁体   English   中英

Python:如果项目等于键,如何 append 将项目列表到字典?

[英]Python: How to append list item to dictionary if item equals key?

我正在尝试遍历列表,如果列表项等于字典键,则 append 将列表项添加到字典中。

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)

Output:

{1: [1, 2, 3], 2: [1, 2, 3], 3: [1, 2, 3]}

所需 output:

{1: [1], 2: [2], 3: [3]}

非常感谢!

那是因为这里:

mydict = dict.fromkeys(mylist, [])

mydict的值将是相同的 object [] ,所以当你 append 到mydict[something]时,你将附加到同一个列表中,不管是something

所有值都相同 object,你 append 三个数字 => 所有值都显示为相同的列表。

为避免这种情况,请为每个键分配列表:

mydict = {}
for item in mylist:
    mydict.setdefault(item, []).append(item)

或者,你知道:

mydict = {key: [key] for key in mylist}

通过使用:

mylist = [1, 2, 3]

mydict = dict.fromkeys(mylist, [])

您正在创建一个 dict,其中包含mylist中的所有元素作为键,并且 dict 中的所有值都是对同一列表的引用,要修复您可以使用:

mydict = dict.fromkeys(mylist)

for item in mylist:
    mydict[item] = [item]

print(mydict)

output:

{1: [1], 2: [2], 3: [3]}

同样的事情,但通过使用字典理解以更有效和紧凑的形式:

mydict = {item: [item] for item 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)

它将 output: {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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM