我需要帮助来从原始词典列表中提取键的子集和值。 我能够获取键值对,但无法将其保存到新字典中,当我打印新字典时,我只能获得的是最后一个键值对,但不是所有子集键值对
list1=[{'t1':43, 't2':45, 't3':56, 't4':59, 't5':45, 't6':31}, {'t1':3, 't2':5, 't3':5, 't4':9}, {'t1':47, 't2':59, 't3':86, 't4':5}]
myks=['t1','t3']
newlist={}
for i in range(len(list1)):
for j in list1[i].keys():
if j in myks:
print (j,list1[i][j])
newlist={j: list1[i][j]}
print(newlist)
我得到的输出:
t1 43
t3 56
t1 3
t3 5
t1 47
t3 86
{'t3': 86}
预期:{'t1':43, t3:56, 't1':3, 't3':5, 't3':86}
请让我知道我在哪里做错了,并帮助修复它。
谢谢
答案 0 :(得分:0)
不幸的是,由于所有字典键必须唯一,因此无法实现预期的输出。您可以将所有匹配的值添加到嵌套列表中,以使其可访问:
list1=[{'t1':43, 't2':45, 't3':56, 't4':59, 't5':45, 't6':31}, {'t1':3, 't2':5, 't3':5, 't4':9}, {'t1':47, 't2':59, 't3':86, 't4':5}]
myks=['t1','t3']
newlist={}
for i in range(len(list1)):
for j in list1[i].keys():
if j in myks:
if j not in newlist:
newlist[j] = [list1[i][j]]
else:
newlist[j].append(list1[i][j])
print(newlist)
>>> {'t1': [43, 3, 47], 't3': [56, 5, 86]}
然后您可以通过列表索引引用这些内容:
print(newlist['t1'][0])
>>> 43