2016-02-19 32 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]