2016-02-19 46 views
0

在这里,我想更新我的设定的一个例子:更新集Python中的值?

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

我预期的结果将是:

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

我可怎么办呢?一套是最好的选择,还是让我使用另一个数据结构呢?我认为set中的更新方法可以做到这一点。但是,我犯了错误,这不是一个好的解决方案,因为它不会将第一个参数作为关键字并重复这些元素。

+1

你将如何去识别* *什么需要改变? –

+0

@Martijn彼得斯我不知道我要做什么,这是我第一次使用set。我是否需要在我的设置中使用新值进行更新?因为第一个元素应该保持不变,而其他两个元素都在变化。 –

+0

那么,你为什么首先使用一套? –

回答

3

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

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

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

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

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

+0

我已更新我的问题。感谢你的更多评论;) –

+0

@MaryamPashmi:不需要更新问题;在字典里面嵌套它没有什么实质性的不同。 –

+0

@MaryamPashmi:您可以将字典作为值放入其他字典中,就像您可以将字典中的值设置为值一样。 –

2

你最好使用dict如果你想有钥匙和价值观,要更新基于关键:

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

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