Python修改并将值附加到二维列表

时间:2015-10-30 20:04:35

标签: python arrays list

我有一个二维列表,其中内部维度总是有3个值(前两个值是字符串,最后一个是整数),外部维度只保存这些值:

my_list=[["a","b",10],["c","d",12],["e","f",64]]

我有一个试图将新的3值列表附加到my_list的函数。如果该列表的第一个和第二个值与my_list中当前列表的第一个和第二个值匹配,我想将它们的最后一个(整数)值加在一起。

例如,尝试将["a","b",3]添加到my_list只会改变my_list:

my_list=[["a","b",13],["c","d",12],["e","f",64]]

但是,如果尝试将["b","a",3]添加到my_list,则只会更改my_list:

my_list=[["a","b",10],["c","d",12],["e","f",64], ["b","a",3]]

这是我的代码:

my_list=[["a","b",10],["c","d",12],["e","f",64]]

a=["a","b",3]

for x in my_list:
   if x[:2]==a[:2]:
      x[3]=x[3]+a[3]

我收到以下错误:

Traceback (most recent call last):
  File "./test", line 9, in <module>
    x[3]=x[3]+a[3]

IndexError: list index out of range

3 个答案:

答案 0 :(得分:3)

python中的列表索引是从零开始,因此您的三元素列表由012编制索引,而不是{您的代码需要{1}},12。此外,以3为键的字典可能是更好的数据结构。

答案 1 :(得分:2)

我认为这是你想要做的,虽然它不接受输入,功能很好

my_list=[["a","b",10],["c","d",12],["e","f",64]]

a=["a","b",3]

for x in my_list:
   if x[0] == a[0] and x[1] == a[1]:
      x[2] += a[2]

答案 2 :(得分:1)

我建议使用词典,对此类任务更有效:

my_dict={("a","b"):10,("c","d"):12, ("e","f"):64}

def add (key,value):
    if key not in my_dict: my_dict[key]=value
    else: my_dict[key]+=value

add(("a","b"),3)
add(("b","a"),3)  

print(my_dict)      

{('a', 'b'): 13, ('b', 'a'): 3, ('e', 'f'): 64, ('c', 'd'): 12}