python - 在 python 中使用逆向字典简化代码

标签 python list dictionary simplify

考虑一些映射 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/

相关文章:

python - HTML 解析没有响应

python - 使用 Pandas Dataframe 仅选择一个日期小于另一个日期的行

python - 如何在 Python 中合并列表?合并 python 列表 (0,1,2) & (A,B,C) 以获得 (0A, 1B, 2C)

c++ - 使用 std::map 检查字符串是否包含重复项

c - 为什么 C 标准库中没有哈希表?

excel - 有效地将所有字典项复制到特定范围

python - 在全局命名空间中加载 Numpy npz 文件的内容

python - 如何找到数据帧列中的最大值?

java - Scala:从列表的列表创建结构(XML)

python - 当类从内置列表继承时