考虑一些映射 my_map
定义一些键的顺序,一些字典 my_dict
将相同的键映射到一些值:
my_map = {'x' : 2, 'y' : 0, 'z' : 1}
my_dict = {'x' : 'foo', 'z' : 'bar', 'y' : 'baz'}
我想使用 my_map
定义的顺序获取 my_dict
值的有序列表。我到达那里的最佳方法是:
inv_map = {v: k for k, v in my_map.items()}
ordered_list = [my_dict[k] for k in [inv_map[d] for d in range(len(my_map))]]
有没有更简单的方法来做同样的事情?
最佳答案
您可以使用 sorted
函数按值对 map 进行排序,然后对其进行转换:
[my_dict[k] for k in sorted(my_map, key=lambda key: my_map[key])]
至少干净一些!
让我们确保它有效:
>>> my_map = {'x' : 2, 'y' : 0, 'z' : 1}
>>> my_dict = {'x' : 'foo', 'z' : 'bar', 'y' : 'baz'}
>>> [my_dict[k] for k in sorted(my_map, key=lambda key: my_map[key])]
['baz', 'bar', 'foo']
关于python - 在 python 中使用逆向字典简化代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65928121/