首页 > 解决方案 > 我怎样才能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']}

我能做些什么?请帮帮我..

标签: pythondictionary

解决方案


使用简单的迭代。

前任:

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']}}

推荐阅读