python如何附加到字典名称为variab的字典

2024-10-03 04:31:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个我正在反复阅读的词典列表。每个字典都有相同的一组键。我希望能够将列表中的每个项附加到一组新的7个字典中,其中7个字典是特定键的每个元素。你知道吗

例如,如果列表中的字典有一个名为“houses”的键,其值为“Dis”“Brobnar”,那么我希望有一个名为“Dis”和“Brobnar”的字典,它将包含整个字典。你知道吗

这是我尝试过的,但失败了,并显示一条错误消息-

cards = [
{'house':'Dis','card_title':'Bob'},
{'house':'Brobnar','card_title':'Fred'},
]

Dis = {}
for i in cards:
    if i['house'] == 'Dis':
        i['house'].append(i)

错误

i['house'].append(i)
AttributeError: 'str' object has no attribute 'append'

想要的结果

Dis = [
{'house':'Dis','card_title':'Bob'},
]
Brobnar = [
{'house':'Brobnar','card_title':'Fred'},
]

Tags: 元素列表字典title错误fredcard词典
2条回答

如果已经分配了变量,并且只想附加到它们,则需要创建一个包装器字典来指向它们:

cards = [
{'house':'Dis','card_title':'Bob'},
{'house':'Brobnar','card_title':'Fred'},
]

Dis = []
Brobnar = []

wrapper = {
    'Dis':Dis,
    'Brobnar':Brobnar,
}

for i in cards:
    if not wrapper.get(i['house'], None) is None:
        wrapper[i['house']].append(i)

print( Dis)
print( Brobnar)

#[{'house': 'Dis', 'card_title': 'Bob'}]
#[{'house': 'Brobnar', 'card_title': 'Fred'}]

我同意@Selcuk's comment,所以我要做一本字典:

d={}.fromkeys([i['house'] for i in cards],[])
d={k:[i for i in cards if i['house']==k] for k,v in d.items()}

现在:

print(d)

是:

{'Dis': [{'house': 'Dis', 'card_title': 'Bob'}], 'Brobnar': [{'house': 'Brobnar', 'card_title': 'Fred'}]}

相关问题 更多 >