我有一个包含所有字符串的“标记”列表和一个形式为 (fieldname,fieldtype) 的元组列表 例如
ds = ['1','1','1','1','1']
fs = [('type',str),('value',int),('hidden',bool),('length',int),('pieces',str)
我想制作一个具有以下形式的字典 v
v = {'type':'1','value',1,'hidden':True,'length':1,'pieces','1')
我目前的效率非常低(我一次将元组中的类型 func 映射到列表中的元素)
v = {}
for j in xrange(len(fs)):
v[fs[j]] = map(fs[j][1],[ds[j]])[0]
我怎样才能使它高效且易于阅读?我已经尝试过 lambda 等。如果这是一次性的事情,我会手动完成,但是有多个元组列表,其中一些有 50 个元素长。
最佳答案
您可以 zip()列表并将 fs
中定义的函数应用于适当的 ds
值:
>>> ds = ['1','1','1','1','1']
>>> fs = [('type',str),('value',int),('hidden',bool),('length',int),('pieces',str)]
>>> {key: f(value) for (key, f), value in zip(fs, ds)}
{'hidden': True, 'type': '1', 'length': 1, 'value': 1, 'pieces': '1'}
关于python - 使用 python map 将元组中的类型 func 应用于字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23134514/