如何在map lambda函数中访问双键值并生成去重字典?
解决方案
当然可以在map的lambda函数中同时访问id和name的值,只需要让lambda返回包含这两个值的二元元组,再通过dict()函数将这些元组转换为字典即可——字典的键天然具有唯一性,会自动完成去重。
实现代码
sample = [ {'By': {'email': 'xyz@stackoverflow.com', 'name': 'xyzzy', 'id': '5859'}}, {'By': {'email': 'abc@stackoverflow.com', 'name': 'abccb', 'id': '9843'}}, {'By': {'email': 'xyz@stackoverflow.com', 'name': 'xyzzy', 'id': '5859'}} ] # 使用map + lambda生成键值对元组,再转成字典 result = dict(map(lambda x: (x['By']['id'], x['By']['name']), sample)) print(result)
输出结果
{'5859': 'xyzzy', '9843': 'abccb'}
补充:更直观的字典推导式写法
如果觉得map+lambda不够直观,也可以用字典推导式实现同样的效果:
result = {item['By']['id']: item['By']['name'] for item in sample}
内容的提问来源于stack exchange,提问作者pats4u
相关产品推荐
相关产品推荐

