2009-07-25 3 views
0

Есть ли лучший способ выразить это, используя понимание списка? Или любой другой способ выразить это в одной строке?один вкладыш для условной замены значений словаря

Я хочу заменить каждое значение в оригинальном словаре соответствующим значением в словаре col или оставить его неизменным, если его нет в словаре col.

col = {'1':3.5, '6':4.7} 
original = {'1':3, '2':1, '3':5, '4':2, '5':3, '6':4} 
for entry in col.iteritems(): 
    original[entry[0]] = entry[1] 
+0

Этот фрагмент кода не работает как есть. Предоставьте фрагмент кода, который мы можем вставить в файл и запустить без изменений, чтобы мы могли легко видеть, что вы делаете. –

+0

@Glenn: У меня не было проблем с этим. Нет синтаксических ошибок, и он сделал то, что, как мне кажется, хотел OP: он обновил исходные значения. Почему вы думаете, что это должно было потерпеть неудачу? – hughdbrown

ответ

2

Я считаю, что update - это то, что вы хотите.

обновление ([другой])

Обновление словаря с парами ключ/значение из других перезапись существующих ключей. Возврат Нет.

Код:

original.update(col[user]) 

Простой тест:

user = "user" 

matrix = { 
    "user" : { 
     "a" : "b", 
     "c" : "d", 
     "e" : "f", 
    }, 
} 

col = { 
    "user" : { 
     "a" : "b_2", 
     "c" : "d_2", 
    }, 
} 

original.update(col[user]) 

print(original) 

Выход

{'a': 'b_2', 'c': 'd_2', 'e': 'f'} 
+0

потрясающий! Я только что узнал еще один полезный ярлык. – Pavel

+0

В этом вопросе говорится: «Я хочу заменить каждое значение в исходном словаре соответствующим значением в словаре col или оставить его неизменным, если его нет в словаре col.». Разве это не нарушит вторую половину этого заявления? –

+0

О, неважно. Я думаю, что неправильно прочитал вопрос ... 'col' - это словарь, который используется для обновления, а не тот, который обновляется. –

Смежные вопросы