根据条件python将dict值从一个更新为另一个

时间:2018-11-23 16:09:04

标签: python python-3.x dictionary set

有没有更好的方法来编写以下代码?我有两个具有与键相同的数据集的字典,我想迭代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 :(得分:2)

当您对dict_a中的pop值使用set时,可能会不必要地修改dict_a。您可以改为使用next + iter来提取set的唯一值:

dict_b[k] = next(iter(v))

答案 1 :(得分:2)

您可以使用update和生成器将其设置为单线:

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

从算法上讲,这不会有任何好处,但会利用所使用的句法手段带来的一些优化。