Python字典排序及小技巧

版权声明:转载请说明链接~~~ https://blog.csdn.net/weixin_40546602/article/details/87906435

不断更新,加入在使用过程中积累的常用python一般语法及技巧

(1)输出数组的最后几个元素:

print(myarray[-16:])  # 输出myarray数组的最后16个元素

(2)字典嵌套字典:

    ① 按照key值进行排序,sorted函数及lambda函数

   python2中:可以按照外层字典key值排序;可以按照内层嵌套字典key值排序;不可以按照内层嵌套字典values值排序

>>> a = {'m1':{'n0':3},'m3':{'n2':9},'m0':{'n1':4},'m2':{'n3':0}}
>>> b = sorted(a.items(), key=lambda x: x[0]) # 按照外层字典key值
>>> b
[('m0', {'n1': 4}), ('m1', {'n0': 3}), ('m2', {'n3': 0}), ('m3', {'n2': 9})]
>>> c = sorted(a.items(), key=lambda x: x[1])  # 按照内层嵌套字典的key值
>>> c
[('m1', {'n0': 3}), ('m0', {'n1': 4}), ('m3', {'n2': 9}), ('m2', {'n3': 0})]

python3中,可以按照外层字典key值排序;不可以按照内层嵌套字典key值排序;不可以按照内层嵌套字典values值排序

>>> a = {'m1':{'n0':3},'m3':{'n2':9},'m0':{'n1':4},'m2':{'n3':0}}
>>> b = sorted(a.items(), key=lambda x: x[0])
>>> b
[('m0', {'n1': 4}), ('m1', {'n0': 3}), ('m2', {'n3': 0}), ('m3', {'n2': 9})]
>>> b = sorted(a.items(), key=lambda x: x[1])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: '<' not supported between instances of 'dict' and 'dict'

查阅很多资料,这篇很全面。但是在dict嵌套dict中,用到的内部嵌套字典的key值需要保持相同,所以建议以后用到嵌套字典时,尽量使用内部key相同的字典。

>>> dic
{'a': {'x': 3, 'y': 2, 'z': 1}, 'b': {'x': 2, 'y': 1, 'z': 3}, 'c': {'x': 1, 'y': 3, 'z': 2}}
>>> b = sorted(dic.items(), key=lambda x: x[1]['x'])
>>> b
[('c', {'x': 1, 'y': 3, 'z': 2}), ('b', {'x': 2, 'y': 1, 'z': 3}), ('a', {'x': 3, 'y': 2, 'z': 1})]
>>> b = sorted(dic.items(), key=lambda x: x[1]['y'])
>>> b
[('b', {'x': 2, 'y': 1, 'z': 3}), ('a', {'x': 3, 'y': 2, 'z': 1}), ('c', {'x': 1, 'y': 3, 'z': 2})]
>>> b = sorted(dic.items(), key=lambda x: x[1]['z'])
>>> b
[('a', {'x': 3, 'y': 2, 'z': 1}), ('c', {'x': 1, 'y': 3, 'z': 2}), ('b', {'x': 2, 'y': 1, 'z': 3})]

(3)嵌套列表排序,


# 按照列表第一个元素排序
>>> a = [['USA', 'b'], ['China', 'c'], ['Canada', 'd'], ['Russia', 'a']]
>>> a.sort(key=lambda x: x[0])
>>> a
[['Canada', 'd'], ['China', 'c'], ['Russia', 'a'], ['USA', 'b']]

# 按照嵌套列表第二个元素排序
>>> a = {'a': [1, 3], 'c': [3, 4], 'b': [0, 2], 'd': [2, 1]}
>>> b = sorted(a.items(), key=lambda x: x[1][1])
>>> b
[('d', [2, 1]), ('b', [0, 2]), ('a', [1, 3]), ('c', [3, 4])]

(4)字典经过排序后,类型变为list,不能再通过字典dict.items()访问。

>>> a = {'a': {'x': 3, 'y': 2, 'z': 1}, 'b': {'x': 2, 'y': 1, 'z': 3}, 'c': {'x': 1, 'y': 3, 'z': 2}}
>>> b = sorted(a.items(), key=lambda x: x[1]['x'])
>>> type(b)
<class 'list'>
>>> b
[('c', {'x': 1, 'y': 3, 'z': 2}), ('b', {'x': 2, 'y': 1, 'z': 3}), ('a', {'x': 3, 'y': 2, 'z': 1})]

猜你喜欢

转载自blog.csdn.net/weixin_40546602/article/details/87906435