📜  Python|排序字典键以列出

📅  最后修改于: 2022-05-13 01:55:11.615000             🧑  作者: Mango

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]