我的元組在Python列表,說如何在Python中查找元組列表中的元組索引?
a = [('foo', 3), ('bar', 1)]
,我要修改的第二個元素中包含'foo'
元組。更具體地說,我想增加這個數字。在其他方面,我想這樣做
>>> increment(a, 'foo')
>>> print a
[('foo', 4), ('bar', 1)]
我的元組在Python列表,說如何在Python中查找元組列表中的元組索引?
a = [('foo', 3), ('bar', 1)]
,我要修改的第二個元素中包含'foo'
元組。更具體地說,我想增加這個數字。在其他方面,我想這樣做
>>> increment(a, 'foo')
>>> print a
[('foo', 4), ('bar', 1)]
您不能直接改變內值一個元組(元組是不可變的)。
def increment(a, name):
for i, x in enumerate(a):
if x[0] == name:
a[i] = (x[0], x[1] + 1)
break
通過使用'break'你假設只有一個'foo'元組,可能還有更多的1 – 2014-12-02 01:20:09
@AlexanderStarostin:的確如此。但是OP提到*「元組」*意味着只有一個。顯然,如果可以有多個,那麼刪除'break'。 – 2014-12-02 01:20:54
當然,謝謝。我不確定OP的全部要求是什麼,'break'帶來OP需要注意的一些限制:) – 2014-12-02 01:23:33
正如我在我的評論中提到,你不能改變一個元組的內容,在這種情況下,可以這麼:但是,你可以用一個新的元組,看起來很像舊更換部件回答你的問題的標題提出的問題(和指數更換整個元組,如果有的話,實測值):
a = [('foo', 3), ('bar', 1)]
def find_index(name, seq):
for i, tpl in enumerate(seq):
if tpl[0] == name:
return i
return None
i = find_index('foo', a)
if i is not None:
a[i] = a[i][0], a[i][1]+1
print(a)
輸出:
[('foo', 4), ('bar', 1)]
你有使用字典而不是考慮?那麼你可以做一個['foo'] + = 1'。 – senshin 2014-12-02 01:18:17
一個元組的內容不能改變,儘管它們中的任何可變對象都可以。不幸的是,你想改變一個不可變類型的整數值,所以你必須在列表中所需的索引處替換整個元組。 – martineau 2014-12-02 01:19:08
@ senshin你想介紹一下這個想法嗎? – usernumber 2014-12-02 01:57:12