我是初学者编码。我正努力重新排列双字典。例如,
dict = {
'student_A': {
'name': 'Hiro',
'age': 22,
},
'student_B': {
'name': 'Alex',
'age': 24,
},
'student_C': {
'name': 'Jon',
'age': 23,
}
}
在此代码中,我如何按照这样的年龄顺序排列? :
[
{
'name': 'Alex'
},
{
'name': 'Jon'
},
{
'name': 'Hiro'
}
]
如果你能解释一下细节,我们将不胜感激!
答案 0 :(得分:1)
你可以这样做:
value_list = list(dict.values())
value_list.sort(key=lambda value: value['age'])
这将使value_list
列出字典中的值,按年龄排序。您可以通过调用dict_values
获取dict.values()
对象来执行此操作。然后可以将此对象转换为列表,然后可以通过调用list.sort()
方法对其进行排序。 key
参数是一个函数,它将返回每个字典的年龄。
如果您没有看到lambda name: statement
语法,则会有一个引用here。
答案 1 :(得分:1)
它看起来(从你给出的输出)就像你真的想要这个名字的年龄相反?而且您还需要列出的对象中的名称 - 这样您就可以过滤掉原始对象的年龄部分。
在这种情况下,您可能希望使用列表推导,这是一种非常有用的pythonic方法,可以在列表上进行过滤和映射类型操作。要了解有关列表理解的更多信息,请查看官方documentation。
如何执行此操作的示例:
>>> my_ordered_list = [ {'name': student['name']} for student in sorted(dict.values(), key=lambda x:-x['age']) ]
>>> my_ordered_list
[{'name': 'Alex'}, {'name': 'Jon'}, {'name': 'Hiro'}]