Moh*_*eza 15 python syntax lambda dictionary python-3.x
我在python 3中有如下字典:
ss = {'a':'2', 'b','3'}
我想用map函数将所有值转换为int ,我写了这样的东西:
list(map(lambda key,val: int(val), ss.items())))
但是python抱怨道:
TypeError :()缺少1个必需的位置参数:'val'
我的问题是如何lambda用两个输入编写一个函数(例如key和val)
the*_*eye 26
ss.items()将给出一个迭代,它在每次迭代时都会给出元组.在您的lambda函数中,您已将其定义为接受两个参数,但元组将被视为单个参数.因此没有值传递给第二个参数.
你可以像这样解决它
print(list(map(lambda args: int(args[1]), ss.items())))
# [3, 2]
如果你无论如何都忽略了键,只需使用ss.values()这样的方法
print(list(map(int, ss.values())))
# [3, 2]
否则,正如Ashwini Chaudhary所建议的,使用itertools.starmap,
from itertools import starmap
print(list(starmap(lambda key, value: int(value), ss.items())))
# [3, 2]
我更喜欢List理解方式
print([int(value) for value in ss.values()])
# [3, 2]
在Python 2.x中,你可以这样做
print map(lambda (key, value): int(value), ss.items())
此功能称为元组参数解包.但是这在Python 3.x中被删除了.在PEP-3113中了解更多相关信息
| 归档时间: | 
 | 
| 查看次数: | 11182 次 | 
| 最近记录: |