python - 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']}
我已经通过将值相加来使用整数数据类型完成此操作,关键是相同的,但我无法理解这一点。非常感谢任何帮助。
解决方案
考虑到包含您的词典的列表:
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']}]
推荐阅读
- python - 如何在 x 轴上显示日期时间?
- wordpress - 想要通过在 WORDPRESS 中添加 URL 来编辑结帐页面
- acumos - 数据管道不可用
- c++ - 如何将 time-uuid(存储在 boost uuid 中)转换为自纪元以来的时间戳/时间?
- java - 带有 Android 查询的房间。此查询在另一个 SQLite 浏览器中工作,但在 Android 中不工作
- laravel - 将上传的文件移动到 root/public_html
- python - 为什么我的程序要求输入两次?
- azure - 验证在 Web api 中登录外部应用程序的用户
- sqlite - 如何找到所需的条款条目
- mysql - MySQL:是否可以使用 SELECT 作为唯一权限在 SELECT 之外设置变量?