将字典值映射到列表

ulr*_*ich 31 python dictionary list

鉴于以下字典:

dct = {'a':3, 'b':3,'c':5,'d':3}
Run Code Online (Sandbox Code Playgroud)

如何将这些值应用于列表,例如:

lst = ['c', 'd', 'a', 'b', 'd']
Run Code Online (Sandbox Code Playgroud)

为了得到类似的东西:

lstval = [5, 3, 3, 3, 3]
Run Code Online (Sandbox Code Playgroud)

wim*_*wim 51

使用map:

>>> map(dct.get, lst)
[5, 3, 3, 3, 3]
Run Code Online (Sandbox Code Playgroud)

使用列表理解:

>>> [dct[k] for k in lst]
[5, 3, 3, 3, 3]
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是,在python 3.x中你需要输入`list(map(dct.get,lst))`来获得实际结果,否则你将得到一个迭代器对象. (16认同)
  • 这似乎是使用map的最佳选择,你不需要lambda. (2认同)

San*_*rma 14

您可以使用列表推导:

lstval = [ dct.get(k, your_fav_default) for k in lst ]
Run Code Online (Sandbox Code Playgroud)

我个人建议使用内置列表推导,map因为它看起来很熟悉所有Python程序员,如果需要自定义默认值,则更容易解析和扩展.


Eug*_*tov 9

您可以使用map函数从列表中迭代键:

lstval = list(map(dct.get, lst))
Run Code Online (Sandbox Code Playgroud)

或者如果您更喜欢列表理解:

lstval = [dct[key] for key in lst]
Run Code Online (Sandbox Code Playgroud)


khe*_*ood 6

lstval = [d[x] for x in lst]
Run Code Online (Sandbox Code Playgroud)

不要为你的字典命名dict.dict是类型的名称.