В зависимости от настроек вы можете сделать что-то вроде этого:
xvalues={'x2': 'DEF'}
values = ['ABC' ,'DEF', 'GHI' ]
items = ['x1', 'x2', 'x3' ]
for x in items:
if xvalues.get(x) == None:
xvalues.update({x: values.pop()})
else:
values.pop()
In [214]: xvalues
Out[214]: {'x2': 'DEF', 'x1': 'GHI', 'x3': 'ABC'}
Если вы можете добавить формат данных к вашему вопросу, я могу обновить этот ответ, но я надеюсь, что это поможет
Или чтобы вставить значения только со значением, вы можете использовать это:
xinsert = []
xinsert2 = []
def makereduce(agg, rval):
if agg[1][rval]:
xinsert.append(rval)
xinsert2.append(rval)
return('',values)
values={'x1': 'ABC', 'x2': 'DEF', 'x3': 'GHI', 'x4': None}
reduce(makereduce, values, ('',values))
In [413]: xinsert
Out[413]: ['x1', 'x2', 'x3']