在Python中,是否可以根据键列表对字典进行排序?

2024-09-26 22:49:41 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有以下字典和清单:

my_dictionary = {1:"hello", 2:"goodbye", 3:"World", "sand":"box"}
my_list = [1,2,3]

有没有一种直接的(Pythonic)方法可以按照列表顺序定义的顺序从字典中获取键-值对,对于字典,键是列表中的元素?

简单的方法是遍历列表并逐个提取映射中的值,但我想知道python是否具有字典列表切片的等效功能。


Tags: 方法box元素hello列表worlddictionary字典
3条回答

这个怎么样?获取my_list中的每个项,并将其传递给字典的get方法。它还通过用None替换缺少的键来处理异常。

map(my_dictionary.get, my_list)

如果你想要元组zip它-

zip(my_list, map(my_dictionary.get, my_list))

如果需要新的dict,请将tuple传递给dict

dict(zip(my_list, map(my_dictionary.get, my_list)))
>>> zip(my_list, operator.itemgetter(*my_list)(my_dictionary))
[(1, 'hello'), (2, 'goodbye'), (3, 'World')]

不知道Python是否足够,但这是有效的:

res = [(x, my_dictionary[x]) for x in my_list]

这是一个list comprehension,但是,如果只需要迭代该列表一次,还可以将其转换为生成器表达式,例如:

for el in ((x, my_dictionary[x]) for x in my_list):
    print el

当然,只有当列表中的所有元素都存在于字典中时,前面的方法才起作用;要解释键不存在的情况,可以执行以下操作:

res = [(x, my_dictionary[x]) for x in my_list if x in my_dictionary]

相关问题 更多 >

    热门问题