我正在尝试更新嵌套字典中的Set,问题是它是否添加了一个新的Set而不是第二次更新当前的Set。
building = {}
building.update({'APT-14D':{}})
building['APT-14D'].setdefault('amenities', set()).add(('hot-water','gas-stove','non-smoke'))
building['APT-14D'].setdefault('amenities', set()).add(('hot-water','non-stove','non-smoke'))
我收到以下内容:
{'APT-14D': {'amenities': {('hot-water', 'non-stove', 'non-smoke'), ('hot-water', 'gas-stove', 'non-smoke')}}}
而不是:
{'APT-14D': {'amenities': {('hot-water', 'non-stove', 'non-smoke')}}}
如何更新当前值而不是在嵌套字典中创建新的Set?
P.S。不同的值为non-stove
和gas-stove
答案 0 :(得分:1)
你没有制作新的套装,而是在你的套装中添加一个不同的元组。如果要将元组的每个元素添加到集合中,请使用.update
:
In [4]: building = {}
...: building.update({'APT-14D':{}})
...: building['APT-14D'].setdefault('amenities', set()).update(('hot-water','gas-stove','non-smoke'))
...: building['APT-14D'].setdefault('amenities', set()).update(('hot-water','non-stove','non-smoke'))
...:
In [5]: building
Out[5]:
{'APT-14D': {'amenities': {'gas-stove',
'hot-water',
'non-smoke',
'non-stove'}}}
重读你的问题,我注意到这甚至不是你想要的。现在看来,你甚至不想要一个集合,只需要一个元组,只需用任何新值替换该元组:
In [16]: building = {'APT-14D':{}}
In [17]: building['APT-14D']['amenities'] = ('hot-water','gas-stove','non-smoke')
In [18]: building['APT-14D']['amenities'] = ('hot-water','non-stove','non-smoke')
In [19]: building
Out[19]: {'APT-14D': {'amenities': ('hot-water', 'non-stove', 'non-smoke')}}