Python如何从嵌套列表与字典创建{x:y}格式的字典?
解决嵌套列表字典提取键值对生成新字典的问题
你遇到的报错list indices must be integers or slices, not list(中文:列表索引必须是整数或切片,不能是列表),问题出在循环逻辑上:
for i in A时,i是A中的子列表元素(比如list1、list2),不是整数索引。- 你用
A[i]去取元素,相当于用列表当索引,违反了列表的索引规则,因此报错。
要生成目标字典,需要两层遍历:先遍历A中的每个子列表,再遍历子列表里的每个字典,把每个字典的'x'值作为键,'y'值作为值存入新字典。
方法1:普通循环实现
newdict = {} # 遍历A中的每个子列表 for sub_list in A: # 遍历子列表中的每个字典 for d in sub_list: newdict[d['x']] = d['y']
方法2:字典推导式(更简洁)
newdict = {d['x']: d['y'] for sub_list in A for d in sub_list}
运行后得到的newdict结果为:
{1: 7, 2: 8, 3: 9}
注意:如果不同字典里有相同的'x'值,后面的会覆盖前面的赋值(示例中dict3在多个子列表里出现,但x=3对应的y值一致,因此无影响)。
内容的提问来源于stack exchange,提问作者n_cen
相关产品推荐
相关产品推荐

