我有一个人的字典,如果他们年龄相同,我想按名字的字母顺序对他们排序,如果他们年龄不同,我想按年龄降序排序。所以实际上,我需要返回两个输出。这是我目前得到的,但它没有考虑到条件。我如何比较每个项目的年龄值并将其添加到不同的列表中,然后对其进行排序?
people = {'Steve' : 20 , 'David': 21 , 'Andrew' : 19 , 'Bruce': 22 ,'James' : 20 , 'Dave': 26 ,'Smith' : 19}
print('Sorted People in Alphabetical Order: ', dict(sorted(people.items())))
print('Sorted People in Numerical Order: ',dict(sorted(people.items(), key=lambda item: item[1])))
我想要的输出是按字母顺序排列的同龄人:{(安德鲁,19),(詹姆斯,20),(史密斯,19),(史蒂夫,20)}
按年龄排序:{(David,21), (Bruce,22), (Dave,26)}
可以将tuple
传递给sorted
中的key
。先按年龄排序,再按基本字母排序。
people = {'Steve' : 20 , 'David': 21 , 'Andrew' : 19 , 'Bruce': 22 ,'James' : 20 , 'Dave': 26 ,'Smith' : 19}
res = dict(sorted(people.items(), key=lambda x: (x[1], x[0])))
# -------------------------------------------x[1]^^^ is value -> age
# ---------------------------------------------------x[0]^^^ is key -> alphabet
print(res)
输出:
{'Andrew': 19,
'Smith': 19,
'James': 20,
'Steve': 20,
'David': 21,
'Bruce': 22,
'Dave': 26}