如何修正map+Lambda生成字典的代码以获取目标字典列表?
解决Python中map转换字典的格式问题
嘿,我明白你现在遇到的问题了——你想把那组元组数据转换成每个元素都是单字典的列表,但当前的map写法生成了嵌套的小字典列表,完全不是你想要的样子。
咱们来修正一下:问题出在你用列表推导式生成了一堆单个键的小字典,而我们需要的是把每个子列表里的所有键值对合并成一个字典。
修正后的代码
original_data = [('h', ['ab', 'aus']), ('c', ['ab', 'escu']), ('n', ['lia', 'lmos'])] result = list(map(lambda row: {b: 1 for b in row[1]}, original_data)) print(result)
为啥这样能行?
原来的写法[{b: 1} for b in row[1]]会为每个元素生成一个独立的小字典,再把它们塞进列表里。而改成{b: 1 for b in row[1]}后,这就变成了字典推导式,直接把所有b:1的键值对合并成一个完整的字典,正好符合你的需求。
如果你觉得lambda+map的写法有点绕,用普通的列表推导式可读性会更强,效果是完全一样的:
result = [{b: 1 for b in item[1]} for item in original_data]
运行上面的代码,你就能得到期望的结果:[{'ab': 1, 'aus': 1}, {'ab': 1, 'escu': 1}, {'lia': 1, 'lmos': 1}]
内容的提问来源于stack exchange,提问作者sara jones
相关产品推荐
相关产品推荐

