如何防止重复使用python中的setdefault进入列表

时间:2017-12-06 03:46:49

标签: python dictionary

假设你有一本字典:

dict1 = {'a':[1,2], 'b':[1,2]}

假设下一个项目是{b:2}。我不希望所有键的字典值都有重复。因此{b:2}不会更新字典,但{b:3}会将其更新为:

{'a':[1,2], 'b':[1,2,3]}

我想对setdefault方法进行一些更改以实现此目的。

1 个答案:

答案 0 :(得分:2)

我将您的dict1值修改为set

In [44]: dict1 = {'a':[1,2],'b':[1,2]}

In [45]: dict1 = {k: set(v) for k, v in dict1.items()}

In [46]: def add_to_dict(dict_tmp):
    ...:     for k, v in dict_tmp.items():
    ...:         dict1.setdefault(k, set()).add(v)
    ...:     return dict1
    ...:

In [47]: d2 = {'b':2}

In [48]: d3 = {'b':3}

In [49]: add_to_dict(d2)
Out[49]: {'a': {1, 2}, 'b': {1, 2}}

In [50]: add_to_dict(d3)
Out[50]: {'a': {1, 2}, 'b': {1, 2, 3}}

函数add_to_dict返回值为set的dict。如果您的要求是需要list的值,则可以在最后修改dict值。