从字典中两个集合的一个集合中移除指定元素
我有一个字典,内容是 { "foo": set(["a", "b"]), "bar": set(["c", "d"]) }
,现在我得到了其中一个集合里的一个元素,还有另一个集合的名字。我需要把这个元素从集合中删除。我目前的尝试是这样的:
keys = dict.keys()
if Element in dict[keys[0]].union(dict[keys[1]]):
dict[keys[abs(keys.index(Other_Set) - 1)]].remove(Element)
不过,这样做似乎有点复杂;有没有什么办法可以简化一下呢?
7 个回答
1
这样怎么样:
keys = dict.keys()
dict[keys[1 - keys.index(Other_Set)]].discard(Element)
使用 discard
的话,如果你要删除的元素不在集合里,就不会出现 KeyError
错误。所以你就不需要再做检查了(另外一种选择是直接忽略这个 KeyError
错误)。而 1 -
这个写法也省去了使用 abs
的必要。
2
使用字典来查找另一组数据:
>>> other={'foo':'bar','bar':'foo'}
>>> d = { "foo": set(["a", "b"]), "bar": set(["b", "c"]) }
>>> element = "b"
>>> setname = "bar"
>>> d[other[setname]].discard(element)
>>> d
{'foo': set(['a']), 'bar': set(['c', 'b'])}
3
试试这个:
dictionary['foo' if otherset == 'bar' else 'bar'].discard(element)