首页 > 解决方案 > Python 字典 - 如果键相同,则创建对应值列表(字符串数据类型)

问题描述

我有一个看起来像这样的数据类型:

{'name': 'brian', 'location': 'Brookings, OR'}
{'name': 'brian', 'location': 'Medford, OR'}
{'name': 'tommy', 'location': 'Portland, OR'}
{'name': 'tommy', 'location': 'Medford, OR'}
{'name': 'tommy', 'location': 'Oklahoma City, OK'}

我想做的是如果键(名称)相同,那么我创建一个对应值的列表,如下所示:

{'name': 'brian', 'location': ['Brookings, OR', 'Medford, OR']}
{'name': 'tommy', 'location': ['Portland, OR', 'Medford, OR', 'Oklahoma City, OK']}

我已经通过将值相加来使用整数数据类型完成此操作,关键是相同的,但我无法理解这一点。非常感谢任何帮助。

标签: pythondata-sciencedata-analysisdata-wrangling

解决方案


考虑到包含您的词典的列表:

l=[{'name': 'brian', 'location': 'Brookings, OR'},
{'name': 'brian', 'location': 'Medford, OR'},
{'name': 'tommy', 'location': 'Portland, OR'},
{'name': 'tommy', 'location': 'Medford, OR'},
{'name': 'tommy', 'location': 'Oklahoma City, OK'}]

您可以执行以下操作:

res=[{'name':i, 'location':[k['location'] for k in l if k['name']==i]} for i in set([p['name'] for p in l])]

输出:

>>> print(res)

[{'name': 'brian', 'location': ['Brookings, OR', 'Medford, OR']}, {'name': 'tommy', 'location': ['Portland, OR', 'Medford, OR', 'Oklahoma City, OK']}]

推荐阅读