обновить значение dict от одного к другому на основе условия Python - PullRequest
0 голосов
/ 23 ноября 2018

Есть ли лучший способ написать следующий код?У меня есть два dict с тем же набором данных в качестве ключа, я хочу перебрать dict_a и проверить, есть ли какой-либо ключ только с одним значением, а затем обновить значение до dict_b.У меня есть следующий рабочий код, но, кажется, должен быть лучший способ сделать это

dict_a = {
'first': {1,2},
'second': {2, 7, 10, 22},
'third': {3},
'fourth': {6,8},
'fifth': {1},
}
dict_b = {
'first': 11,
'second': 4,
'third': 1,
'fourth': 1000,
'fifth': 8
}
for k, v in dict_a.items():
    if len(v) == 1:
        dict_b[k] = v.pop()
#=>  
#dict_b = {
#'first': 11,
#'second': 4,
#'third': 3,
#'fourth': 1000,
#'fifth': 1
#}

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Вы можете сделать его однострочным, используя update и генератор:

dict_b.update((k, v.pop()) for k, v in dict_a.items() if len(v) == 1)

С точки зрения алгоритма, это ничего не дает, но будет использовать некоторые оптимизации, которые приходятс использованными синтаксическими средствами.

0 голосов
/ 23 ноября 2018

Вы, возможно, излишне, модифицируете dict_a, когда используете pop для set значений в dict_a.Вместо этого вы можете использовать next + iter для извлечения единственного значения set:

dict_b[k] = next(iter(v))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...