更新集合 Python 中的值?

update the value in set Python?

这是我的集合示例,我想更新它:

>>> x = set()
>>> x.add(('A1760ulorenaf0821x151031175821564', 1, 0))
>>> x
set([('A1760ulorenaf0821x151031175821564', 1, 0)])

我的预期结果是:

set([('A1760ulorenaf0821x151031175821564', 1, 1)])

我该怎么做?集合是最好的选择,还是我必须为此使用另一种数据结构?我认为 set 中的更新方法可以做到这一点。但是,我犯了一个错误,这不是一个好的解决方案,因为它没有将第一个参数视为键并重复元素。

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

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

>>> x = {}
>>> x['A1760ulorenaf0821x151031175821564'] = [1, 0]
>>> x['A1760ulorenaf0821x151031175821564'][1] += 1  # increment the second element.
>>> x
{'A1760ulorenaf0821x151031175821564': [1, 1]}

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

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

如果您尝试拥有键和值并且希望基于键进行更新,则最好使用 dict

x = {'A1760ulorenaf0821x151031175821564' : [1, 0]}

x['A1760ulorenaf0821x151031175821564'] = [1, 1]