如何在Python中找到元组列表中的元组索引?

时间:2014-12-02 01:15:15

标签: python list tuples

我在Python中有一个元组列表,比如说

a = [('foo', 3), ('bar', 1)]

我希望修改包含'foo'的元组中的第二个元素。更具体地说,我想增加这个数字。换句话说,我想做

>>> increment(a, 'foo')
>>> print a
[('foo', 4), ('bar', 1)]

2 个答案:

答案 0 :(得分:1)

您不能直接在元组中更改值(元组是不可变的)。但是,您可以使用看起来与旧元组非常相似的新元组替换元素:

def increment(a, name):
    for i, x in enumerate(a):
        if x[0] == name:
            a[i] = (x[0], x[1] + 1)
            break

答案 1 :(得分:0)

正如我在评论中提到的,在这种情况下你无法改变元组的内容,所以要回答问题标题中提出的问题(并在该索引处替换整个元组,如果有的话,实测值):

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)]