Jef*_*rth 25 python functional-programming hashtable list
有没有办法将列表映射到字典?我想要做的是给它一个函数,它将返回一个键的名称,该值将是原始值.例如;
somefunction(lambda a: a[0], ["hello", "world"])
=> {"h":"hello", "w":"world"}
Run Code Online (Sandbox Code Playgroud)
(这不是我想要做的具体示例,我想要像map()
这样的通用函数可以做到这一点)
Hte*_*hno 37
在Python 3中,您可以使用此词典理解语法:
def foo(somelist):
return {x[0]:x for x in somelist}
Run Code Online (Sandbox Code Playgroud)
Mar*_*ers 27
我不认为存在一个标准函数就是这样,但是使用dict builtin和一个理解来构造一个很容易:
def somefunction(keyFunction, values):
return dict((keyFunction(v), v) for v in values)
print somefunction(lambda a: a[0], ["hello", "world"])
Run Code Online (Sandbox Code Playgroud)
输出:
{'h': 'hello', 'w': 'world'}
Run Code Online (Sandbox Code Playgroud)
但是为这个功能提出一个好名字比实现它更困难.我将把它作为读者的练习.
从其他答案中获取提示,我使用地图操作实现了这一点。我不确定这是否完全回答了您的问题。
mylist = ["hello", "world"]
def convert_to_dict( somelist ):
return dict( map( lambda x: (x[0], x), somelist ) )
final_ans = convert_to_dict( mylist )
print final_ans
Run Code Online (Sandbox Code Playgroud)
如果我没有理解你的问题,我相信你可以组合实现这一点map
,zip
和dict
构造函数:
def dictMap(f, xs) :
return dict(zip(map(f, xs), xs)
Run Code Online (Sandbox Code Playgroud)
一个更健全的实现:
def dictMap(f, xs) :
return dict((f(i), i) for i in xs)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
38151 次 |
最近记录: |