Python3之字典生成器结合lambda实现按key/value排序

Python3之字典生成器结合lambda实现按key/value排序

1、先介绍不常见的字典按value排序:

dict1 = {"g": 2, "f": 1, "a": 6}
print(dict1.values())
d1 = sorted(dict1.items(), key=lambda d: d[1], reverse=True)    # 按字典values倒序排序
d2 = sorted(dict1.items(), key=lambda d: d[1])   # # 按字典values正序排序
print(d1)
print(d2)

输出:
[('a', 6), ('g', 2), ('f', 1)]
[('f', 1), ('g', 2), ('a', 6)]
解释:d[1]表示按字典的value排序,若是0则按字典的key排序(文末有示例),大概的意思就是相当于for遍历dict1.items(),那么每次遍历key是第一个(索引0),value是第二个(索引1)。
然后这里返回的是列表,列表中包含多个元组

2、如果想返回字典,可以借用字典生成器:

dict1 = {"g": 2, "f": 1, "a": 6}
d1 = {i[0]: i[1] for i in sorted(dict1.items(), key=lambda d: d[1])}

输出:
{'f': 1, 'g': 2, 'a': 6}
解释:
sorted(dict1.items(), key=lambda d: d[1])还是跟上面一样,只是多了个字典生成器,它跟列表生成式差不多,i[0]是key,而i[1]是value

3、如果要按key排序
将标号1中d[1]改为d[0]即可:

dict1 = {"g": 2, "f": 1, "a": 6}
d1 = {i[0]: i[1] for i in sorted(dict1.items(), key=lambda d: d[0])}
print(d1)

out:
{'a': 6, 'f': 1, 'g': 2}

你可能感兴趣的:(Python3之字典生成器结合lambda实现按key/value排序)