我有一个清单。
mapper = {"a": 9, "b": 7}
A = ["a", "b"]
Run Code Online (Sandbox Code Playgroud)
我想得到:
result = [9, 7]
Run Code Online (Sandbox Code Playgroud)
我知道有多种方法可以实现这一目标,例如:
result = [mapper[char] for char in A]
result = list(map(lambda x: mapper[x], A))
Run Code Online (Sandbox Code Playgroud)
对于第二种方式,我们可以使用operator
模块而不是使用 lambda 吗?
我找到了一个名为 的方法operator.getitem()
,我尝试使用
result = list(map(operator.getitem(mapper), A))
Run Code Online (Sandbox Code Playgroud)
但这会引发异常。
我知道list(map(lambda x: operator.getitem(mapper, x), A))
会起作用,但我只想避免使用lambda
.
我找到了这个问题,但我没有找到解决方案。
看起来您正在寻找operator.itemgetter
(注意第二种形式,它返回多个项目):
>>> operator.itemgetter(*A)(mapper)
(9, 7)
Run Code Online (Sandbox Code Playgroud)