更新集合Python中的值?

Mar*_*hmi 2 python set

这是我想要更新的一组示例:

>>> x = set()
>>> x.add(('A1760ulorenaf0821x151031175821564', 1, 0))
>>> x
set([('A1760ulorenaf0821x151031175821564', 1, 0)])
Run Code Online (Sandbox Code Playgroud)

我的预期结果是:

set([('A1760ulorenaf0821x151031175821564', 1, 1)])
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做?集合是最好的选择,还是让我使用其他数据结构?我认为更新方法set可以做到这一点.但是,我犯了错误,这不是一个好的解决方案,因为它不会将第一个参数视为关键并重复元素.

Mar*_*ers 7

您必须从集合中删除元素,并添加一个更新该值的新元素.那是因为使用散列来有效地消除重复.如果允许直接改变元素,你就会打破这个模型.

我想你只希望第一个元素是唯一的,并跟踪与第一个元素相关的一些数据.如果是这样,你想要使用字典 ; 使用第一个元素作为键映射到其他两个值,在列表中以便于更改:

>>> x = {}
>>> x['A1760ulorenaf0821x151031175821564'] = [1, 0]
>>> x['A1760ulorenaf0821x151031175821564'][1] += 1  # increment the second element.
>>> x
{'A1760ulorenaf0821x151031175821564': [1, 1]}
Run Code Online (Sandbox Code Playgroud)

字典中的键也必须是唯一的.

注意,set.update()只给你一个联合操作; 通过添加来自集合中尚未存在的参数的所有元素,就地更新集合.set.update()不能改变集合中已有的元素,因为集合的元素不应该被改变(或者至少不会改变它们的散列和相等性).