0
我有保存记录的集合,如果一些词典:匹配值
d1 = {'id':['223','444'],'value_1':['v1','x1']}
d2 = {'id': ['223','666'],'value_2':['v2','x2']}
d3 = {'id':['223','444'], 'value_3':['v3','x3']}
我要搜索所有符合第一库的ID,并将其保存在一个新的与记录所有的领域,“_1”,“_2”和“VALUE_3”:
d_4 = {'id':[],'value_1':[],'value_2':[],'value_3':[]}
如果一条记录没有在所有的词典,我将在这一领域增加“----”存在。所以输出,在这种情况下,将是:
d_4
{'id': ['223', '444'],
'value_1': ['v1', 'x1'],
'value_2': ['v2', '----'],
'value_3': ['x3', 'x3']}
我写了这个代码,可以这样做:
for i,id_d1 in enumerate(d1['id']):
d_4['id'].append(id_d1)
d_4['value_1'].append(d1['value_1'][i])
if id_d1 in d2['id']:
for j,id_d2 in enumerate(d2['id']):
if id_d1==id_d2:
d_4['value_2'].append(d2['value_2'][j])
else:
d_4['value_2'].append('----')
if id_d1 in d3['id']:
for k,id_d3 in enumerate(d3['id']):
if id_d1==id_d3:
d_4['value_3'].append(d3['value_3'][j])
else:
d_4['value_3'].append('----')
但并不似乎是一个不错的办法。
我明白你的这个权利吗r记录有一个'id'成员,它实际上是一个**的**列表,而一个'value_x'成员实际上是一个值列表,每个值都对应一个id,依次为?也就是说,'d1 ['value_1'] [0]'是与'd1 ['id'] [0]'对应的值? –
这是不明确是否'd1' ids是参考,因为你说“如果其中一个记录*不存在于所有字典*我将在该字段中添加'----'。这是否意味着用'd3 = {'id':['223','555'],'value_3':['v3','x3']}'你会有'----''在'd_4'中代表'value_3'和'value_1',然后呢? – zezollo
@MathieuBridon是的,这是正确的 –