字典中的地图列表

Posted

技术标签:

【中文标题】字典中的地图列表【英文标题】:Map list from dictionaries 【发布时间】:2016-07-19 16:06:49 【问题描述】:

我是 python 新手,为此查看了很多页面。

我知道 pandas 数据帧有这个映射功能:

dictionary = a:1, b:2, c:6

df['col_name'] = df.col_name.map(dictionary) #df is a pandas dictionary

我如何为列表做类似的事情,即,

mapped_list = list_to_be_mapped.map(dictionary)

在哪里

list_to_be_mapped = [a,a,b,c,c,a]
mapped_list       = [1,1,2,6,6,1]

【问题讨论】:

根据您的字典,您的mapped_list 应该是[1, 1, 2, 6, 6, 1] 吗? 是的,我已经实施了这些更改。这是一个小错字。但这并不会改变答案!谢谢。 【参考方案1】:

你可以使用dictionaryget函数

list(map(dictionary.get, list_to_be_mapped))

【讨论】:

【参考方案2】:

IIUC 你可以使用简单的list comprehension

[dictionary[key] for key in list_to_be_mapped]

In [51]: [dictionary[key] for key in list_to_be_mapped]
Out[51]: [1, 1, 2, 6, 6, 1]

如果您更喜欢 pandas 解决方案,您可以将您的 list_to_be_mapped 转换为系列,然后使用与您的示例相同的方法:

s = pd.Series(list_to_be_mapped)

In [53]: s
Out[53]:
0    a
1    a
2    b
3    c
4    c
5    a
dtype: object

In [55]: s.map(dictionary).tolist()
Out[55]: [1, 1, 2, 6, 6, 1]   

【讨论】:

【参考方案3】:

如果您只想在字典中实际映射这些值,我建议如下:

dictionary = 'a': 1, 'b': 2
list_to_be_mapped = ['a', 'a', 'b', 'c', 'c', 'a']
[dictionary.get(a) if dictionary.get(a) else a for a in list_to_be_mapped]

返回

[1, 1, 2, 'c', 'c', 1]

【讨论】:

以上是关于字典中的地图列表的主要内容,如果未能解决你的问题,请参考以下文章

Legacy UDF - 确定字典/地图中的最大值

Numpy:使用字典作为地图有效地替换二维数组中的值

使用字典 get() 作为函数从地图创建 Python 列表与使用 for 循环创建字典 get() 列表

将值附加到字典中的一个列表 将值附加到字典中的所有列表

将列表列表转换为Python中的字典字典

使用列表中的项目更改嵌套字典的字典中的值?