如何在不使用OrderedDict的情况下按键对嵌套字典进行字母排序

2024-10-03 06:23:53 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有这个嵌套字典:

people = {
          Kamara: {'sex': 'Male', 'alias': 'John', 'age': '27'},
          Alison: {'age': '21', 'alias': 'Marie', 'sex': 'Female'},
          Oliver: {'alias': 'Marie', 'age': '25', 'sex': 'Female'}
         }

我想按字母顺序对所有内容进行排序。我指的不仅是主键,还有子键,不使用OrderedDict库。最终结果应该是:

people = {
          Alison: {'age': '21', 'alias': 'Marie', 'sex': 'Female'},
          Kamara: {'age': '27', 'alias': 'John', 'sex': 'Male'},
          Oliver: {'age': '25', 'alias': 'Marie', 'sex': 'Female'}
        }

这就是我所拥有的:

people = {key: dict(sorted(val.items(), key=lambda ele: ele[1])) for key, val in people.items()}

但我得到了这个错误:

'str' object has no attribute 'items'

Tags: keyageitemsaliasvaljohnpeoplemale
2条回答

听写理解可以做到这一点

people = {
          'Kamara': {'sex': 'Male', 'alias': 'John', 'age': '27'},
          'Alison': {'age': '21', 'alias': 'Marie', 'sex': 'Female'},
          'Oliver': {'alias': 'Marie', 'age': '25', 'sex': 'Female'}
         }


new_dict = {k: {x:y for x,y in sorted(v.items())} for k,v in sorted(people.items())}

print(new_dict)

{'Alison': {'age': '21', 'alias': 'Marie', 'sex': 'Female'}, 
'Kamara': {'age': '27', 'alias': 'John', 'sex': 'Male'}, 
'Oliver': {'age': '25', 'alias': 'Marie', 'sex': 'Female'}}
f =  = {k: dict(sorted(v.items(), key=lambda item: item[0])) for k, v in sorted(people.items(), key=lambda item: item[0]) }

输出:

{'Alison': {'age': '21', 'alias': 'Marie', 'sex': 'Female'}, 
'Kamara': {'age': '27', 'alias': 'John', 'sex': 'Male'},
'Oliver': {'age': '25', 'alias': 'Marie', 'sex': 'Female'}}

相关问题 更多 >