d = {'hua1':35,'hua2':65,'hua3':43,'hua4':30}
print(sorted(d.items(),key=lambda x:x[1]))
print(sorted(d,key=lambda x:x))
print(sorted(d.values(),key=lambda x:x))
为什么上面三个print()打印的东西不一样?
是只有字典需要用keys()、items()、values()进行打印吗?
望指导,谢谢!
三行分别的输出为
[('hua4', 30), ('hua1', 35), ('hua3', 43), ('hua2', 65)]
['hua1', 'hua2', 'hua3', 'hua4']
[30, 35, 43, 65]
分别是键值对,键,值
第一行代码使用sorted()函数对字典中所有项按值进行排序,并将结果作为一个元素列表返回。key关键字参数使用lambda表达式指定以元组的第二个元素(即值)作为排序依据。因此,将按值升序对字典项进行排序,并按从小到大顺序返回一个列表。
第二行代码对字典d本身进行排序,并在文本上打印出整个字典。key关键字参数使用lambda表达式指定以字典的键名称(字符串)作为排序依据。因为键名称是字符串,因此将按字典序对键进行排序,并返回一个列表。
第三行代码使用sorted()函数对字典中所有值进行排序,并将结果作为一个元素列表返回。key关键字参数使用lambda表达式指定将值作为排序依据。因此,将按值升序对字典中的整数进行排序,并返回一个列表。
items 获取的是键-值对,而第一个 sorted 是按照键-值对的第二个元素(也就是值)进行排序。
当使用字典本身作为可迭代对象的时候,会返回所有的键,所以第二个 sorted 是按键 对键列表进行排序。
values 获取值列表,所以第三个 sorted 是按值 对值列表进行排序。