【发布时间】:2021-06-03 20:47:08
【问题描述】:
我有一个看起来像的字典列表
[{'n': 3, 'topic': 4, 'shared_via_twitter': 'N'}, {'n': 72, 'topic': 1, 'shared_via_twitter': 'Y'}, {'n': 46, 'topic': 2, 'shared_via_twitter': 'N'}, {'n': 36, 'topic': 2, 'shared_via_twitter': 'Y'}, {'n': 5, 'topic': 4, 'shared_via_twitter': 'N'}, {'n': 29, 'topic': 2, 'shared_via_twitter': 'Y'}, {'n': 102, 'topic': 2, 'shared_via_twitter': 'Y'}, {'n': 13, 'topic': 8, 'shared_via_twitter': 'Y'}, {'n': 52, 'topic': 2, 'shared_via_twitter': 'N'}, {'n': 24, 'topic': 5, 'shared_via_twitter': 'N'}]
我希望能够将具有相同 topic 和 shared_via_twitter 值的所有字典合并为一个,并更新新字典的 n 值以反映总和。
例如 如果我有
[{'n': 3, 'topic': 1, 'shared_via_twitter': 'N'}, {'n': 7, 'topic': 1, 'shared_via_twitter': 'N'}]
那么我想要{'n': 10, 'topic': 1, 'shared_via_twitter': 'N'} 作为结果。
我正在考虑使用类似的地图
def xs(x):
# {'n': 3, 'topic': 4, 'shared_via_twitter': 'N'}
# {'n': 7, 'topic': 4, 'shared_via_twitter': 'N'}
if x['topic'] == v['topic'] and x['shared_via_twitter'] == v['shared_via_twitter']:
x['n']+=v['n']
v = dict(x)
return x
g = map(xs, rows)
但这显然看起来不干净/工作。 任何想法将不胜感激。
【问题讨论】:
标签: python python-3.x list python-2.7 dictionary