假设你有一本字典:
dict1 = {'a':[1,2], 'b':[1,2]}
假设下一个项目是{b:2}
。我不希望所有键的字典值都有重复。因此{b:2}
不会更新字典,但{b:3}
会将其更新为:
{'a':[1,2], 'b':[1,2,3]}
我想对setdefault
方法进行一些更改以实现此目的。
答案 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值。