繁体   English   中英

在字典中附加值列表

[英]Appending the values list in dictionary

我有字典,其中包含不同的列表。

我想将数据合并到不同的字典中,在其中附加相似键的值。

{'mental_issue': ['stress', 'live in fear', 'stomach curl', 'wracked by stress', 'chest tighten']}
{'sexual_abuse': ['stalking'], 'mental_issue': ['abuse', 'pica']}
{}
{'verbal_abuse': ['in the face'], 'mental_issue': ['abuse']}
{}
{'mental_issue': ['abuse']}
{'mental_issue': ['abuse']}
{'mental_abuse': ['name call'], 'mental_issue': ['abuse']}
{}
{'mental_issue': ['broken jaw', 'abuse', 'heart broken']}
{'mental_issue': ['live in fear']}
{'mental_issue': ['abuse', 'trauma']}
{'mental_issue': ['nightmares', 'abuse', 'panic attack']}
{'mental_issue': ['stress']}
{'mental_issue': ['severe']}
{'mental_issue': ['nightmares', 'bad emotional state']}
{'sexual_abuse': ['rape'], 'mental_issue': ['stress', 'paranoia']}
{'mental_issue': ['fracturing both my', 'both my knees']}
{'mental_issue': ['abuse']}
{'sexual_abuse': ['rape'], 'verbal_abuse': ['kicking'], 'mental_issue': ['nightmares']}

我想结合诸如mental_abuse之类的所有问题的值,应该使所有字典中的所有精神病都归宿。

我写了这个逻辑-

sexual_abuse_list = []
d = {'sexual_abuse': ['rape'], 'verbal_abuse': ['kicking'], 'mental_issue': ['nightmares']}
if 'sexual_abuse' in d:
    for item in d['sexual_abuse']:
            sexual_abuse_list.append(item)

这是正确的逻辑吗? 还是可以编写更好的逻辑?

使用collections.defaultdict

例如:

from collections import defaultdict


lst = [{'mental_issue': ['stress', 'live in fear', 'stomach curl', 'wracked by stress', 'chest tighten']},
{'sexual_abuse': ['stalking'], 'mental_issue': ['abuse', 'pica']},
{},
{'verbal_abuse': ['in the face'], 'mental_issue': ['abuse']},
{},
{'mental_issue': ['abuse']},
{'mental_issue': ['abuse']},
{'mental_abuse': ['name call'], 'mental_issue': ['abuse']},
{},
{'mental_issue': ['broken jaw', 'abuse', 'heart broken']},
{'mental_issue': ['live in fear']},
{'mental_issue': ['abuse', 'trauma']},
{'mental_issue': ['nightmares', 'abuse', 'panic attack']},
{'mental_issue': ['stress']},
{'mental_issue': ['severe']},
{'mental_issue': ['nightmares', 'bad emotional state']},
{'sexual_abuse': ['rape'], 'mental_issue': ['stress', 'paranoia']},
{'mental_issue': ['fracturing both my', 'both my knees']},
{'mental_issue': ['abuse']},
{'sexual_abuse': ['rape'], 'verbal_abuse': ['kicking'], 'mental_issue': ['nightmares']}]

d = defaultdict(list)

for i in lst:
    for k, v in i.items():
        d[k].extend(v)
print(d)

输出:

defaultdict(<type 'list'>, {'sexual_abuse': ['stalking', 'rape', 'rape'], 'verbal_abuse': ['in the face', 'kicking'], 'mental_abuse': ['name call'], 'mental_issue': ['stress', 'live in fear', 'stomach curl', 'wracked by stress', 'chest tighten', 'abuse', 'pica', 'abuse', 'abuse', 'abuse', 'abuse', 'broken jaw', 'abuse', 'heart broken', 'live in fear', 'abuse', 'trauma', 'nightmares', 'abuse', 'panic attack', 'stress', 'severe', 'nightmares', 'bad emotional state', 'stress', 'paranoia', 'fracturing both my', 'both my knees', 'abuse', 'nightmares']})

暂无
暂无

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

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