[英]How can I use map to return a modified dictionary based on conditions in one line of code?
您好我应该写一个 function CustomOp CustomOp(d)
,它需要一个 dict d 并以下列方式使用:
dict(map(CustomOp(d), d.items()))
function 应该根据以下条件帮助修改 dicts 值:
此外 function CustomOp CustomOp(d)
应该写在一行代码中(忽略头部 obv)
到目前为止,这是我能够做到的。 建议谨慎行事!
def UseOp(d):
return dict(map(CustomOp(d), d.items()))
def CustomOp(d):
return lambda t:tuple([t[0],t[1]*2]) if all(type(v)==int for v in d.values()) else lambda t:tuple([t[0],t[1][::-1]]) if all(type(v)==str for v in d.values()) else lambda t:t
它仅在 Dict 仅包含整数时才有效,否则我会得到:
TypeError:无法将字典更新序列元素#0 转换为序列
我不知道如何让这条线工作,以及如何使它更短,经过相当长的时间后,我决定放弃并问你们。
试试这个来解决问题:
def CustomOp(d):
return (lambda t:tuple([t[0],t[1]*2])) if all(type(v)==int for v in d.values()) else (lambda t:tuple([t[0],t[1][::-1]])) if all(type(v)==str for v in d.values()) else lambda t:t
问题在于if
- else
语句和lambda
语句之间的分组方式。 通过将lambda
语句括在括号中,function 可以按预期工作。 你的逻辑很好。 您只是没有考虑运算符优先级/分组...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.