python - 我怎样才能python字典重复值和重建
问题描述
我在 python 字典中有问题。
我要字典
[原样]
{'level_1_name': 'asset', 'level_2_name': 'search', 'usage_permission': 'CREATE'}
{'level_1_name': 'asset', 'level_2_name': 'search', 'usage_permission': 'READ'}
{'level_1_name': 'asset', 'level_2_name': 'search', 'usage_permission': 'EDIT'}
{'level_1_name': 'server', 'level_2_name': 'keysearch', 'usage_permission': 'CREATE'}
{'level_1_name': 'server', 'level_2_name': 'keysearch', 'usage_permission': 'DELETE'}
[成为]
{'level_1_name': 'asset', 'level_2_name': 'search', 'usage_permission': ['CREATE', 'READ', 'EDIT']}
{'level_1_name': 'server', 'level_2_name': 'keysearch', 'usage_permission': ['CREATE', 'DELETE']}
我能做些什么?请帮帮我..
解决方案
使用简单的迭代。
前任:
data = [{'level_1_name': 'asset', 'level_2_name': 'search', 'usage_permission': 'CREATE'},
{'level_1_name': 'asset', 'level_2_name': 'search', 'usage_permission': 'READ'},
{'level_1_name': 'asset', 'level_2_name': 'search', 'usage_permission': 'EDIT'},
{'level_1_name': 'server', 'level_2_name': 'keysearch', 'usage_permission': 'CREATE'},
{'level_1_name': 'server', 'level_2_name': 'keysearch', 'usage_permission': 'DELETE'}]
result = {}
for i in data:
if i['level_1_name'] not in result:
result[i['level_1_name']] = {'usage_permission': [i.pop('usage_permission')], **i }
else:
result[i['level_1_name']]['usage_permission'].append(i['usage_permission'])
print(result)
输出:
{'asset': {'level_1_name': 'asset',
'level_2_name': 'search',
'usage_permission': ['CREATE', 'READ', 'EDIT']},
'server': {'level_1_name': 'server',
'level_2_name': 'keysearch',
'usage_permission': ['CREATE', 'DELETE']}}
推荐阅读
- android - 我们是否应该在 Android 的 XML 中始终使用 xml version="1.0" 和 encoding="utf-8" ?
- compression - 如何在 Kafka 生产者中添加压缩
- mysql - 在生产环境 MySQL 数据库上更改 `auto_increment_increment` 和 `auto_increment_offset` 会导致任何错误吗?
- visual-studio - 在 Visual Studio 中将 Azure Function App 项目的 ARM 模板放在哪里
- javascript - Nuxt.js 文档未定义(vuejs-datepicker)
- r - R 中的错误代码:“Log2 倍数变化不是数字!”
- r - 如何使它成为 R 中 Shiny 的用户界面?
- java - 无法获取 Xml 节点的第一个子节点
- scala - 在 Scala 中使用“ArrayBuffer.empty[A]”或“ArrayBuffer[A]()”初始化空 ArrayBuffer 的区别
- arrays - 我需要提供本月、月+1、月+2和月+3的表格输出,这些输出来自一张表中的众多表格