python - 在字典中附加值列表
问题描述
我有字典,其中包含不同的列表。
我想将不同字典中的数据组合起来,并在其中附加相似键的值。
{'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']})
推荐阅读
- java - 如何打开用 jdk 12 编写的 .jar
- spring-boot - Springboot Jersey - 使用 ServletProperties.FILTER_STATIC_CONTENT_REGEX 的自定义过滤器
- sql - 用另一个 SQL Server 的数据更新一个 SQL Server 的最佳方法?
- java - LibGDX - 调整大小后将粒子渲染到错误的位置
- graphics - 在我的光线追踪器中加载后翻转法线
- linux - 如何在不安装 perlbrew 的情况下指定用于脚本的 perl 版本
- vb.net - 有没有办法在按下按钮时在运行时刷新 wpf 页面?
- javascript - 如何在 PUT 请求后使用 Fetch-Suspense 重新渲染 React 组件
- ajax - 如何为嵌套类别编写 django 模型?
- amazon-dynamodb - 根据PK设置ttl