Python|排序字典键以列出
有时,我们希望将字典展平成列表,简单的展平相对容易,但是当我们希望以排序方式对齐键和值时,即按值排序,则变得相当复杂。让我们讨论可以执行此任务的某些方式。
方法 #1:使用sum() + sorted() + items()
+ lambda
上述功能的组合可用于执行此特定任务。在此,首先我们使用sorted()
按键对字典进行排序以获得所需的顺序,然后通过items()
函数提取键和值,这些函数由 lambda函数作为对返回。 sum函数完成填充元组的任务。
# Python3 code to demonstrate working of
# Sort dictionary keys to list
# Using sum() + sorted() + items() + lambda
# initializing dictionary
test_dict = {'Geeks' : 2, 'for' : 1, 'CS' : 3}
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
# Using sum() + sorted() + items() + lambda
# Sort dictionary keys to list
res = list(sum(sorted(test_dict.items(), key = lambda x:x[1]), ()))
# printing result
print("List after conversion from dictionary : " + str(res))
输出 :
The original dictionary is : {'Geeks': 2, 'for': 1, 'CS': 3}
List after conversion from dictionary : ['for', 1, 'Geeks', 2, 'CS', 3]
方法#2:使用chain() + sorted() + items()
+ lambda
这种方法也和上面的方法类似,唯一的区别是最终列表的构建是通过链式方法完成的,减少了转换为元组的中间步骤,并且在线性时间内完成了整个任务。
# Python3 code to demonstrate working of
# Sort dictionary keys to list
# Using chain() + sorted() + items() + lambda
from itertools import chain
# initializing dictionary
test_dict = {'Geeks' : 2, 'for' : 1, 'CS' : 3}
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
# Using chain() + sorted() + items() + lambda
# Sort dictionary keys to list
res = list(chain(*sorted(test_dict.items(), key = lambda x: x[1])))
# printing result
print("List after conversion from dictionary : " + str(res))
输出 :
The original dictionary is : {'Geeks': 2, 'for': 1, 'CS': 3}
List after conversion from dictionary : ['for', 1, 'Geeks', 2, 'CS', 3]