Python修改并向二维列表追加值

Python修改并向二维列表追加值,python,arrays,list,Python,Arrays,List,我有一个二维列表,其中内部维度始终有3个值(前2个值是字符串,最后一个值是整数),外部维度只保存这些值,如下所示: my_list=[[“a”、“b”、“10”、“c”、“d”、“12”、“e”、“f”、“64]] 我有一个函数,它试图将一个新的3值列表附加到my_list。如果该列表的第一个和第二个值与当前在我的_列表中的列表的第一个和第二个值匹配,我想将它们的最后一个(整数)值相加 例如,尝试将[“a”,“b”,3]添加到我的列表中只会像这样更改我的列表: my_list=[[“a”、“b”

我有一个二维列表,其中内部维度始终有3个值(前2个值是字符串,最后一个值是整数),外部维度只保存这些值,如下所示:

my_list=[[“a”、“b”、“10”、“c”、“d”、“12”、“e”、“f”、“64]]

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

例如,尝试将
[“a”,“b”,3]
添加到我的列表中只会像这样更改我的列表:

my_list=[[“a”、“b”、“13”、“c”、“d”、“12”、“e”、“f”、“64]]

但是,如果试图将
[“b”,“a”,3]
添加到我的列表中,只会像这样更改我的列表:

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
回溯(最近一次呼叫最后一次):
文件“/test”,第9行,在
x[3]=x[3]+a[3]
索引器:列表索引超出范围

python中的列表索引是零基的,因此您的三个元素列表是按
0
1
2
索引的,而不是按代码所期望的那样按
1
2
3
索引的。另外,以
(“a”、“b”)
为键的字典可能是更好的数据结构。

python中的列表索引是零基的,因此您的三元素列表是按
0
1
2
索引的,而不是按代码预期的
1
2
3
索引的。另外,以
(“a”,“b”)
为键的字典可能是更好的数据结构。

我认为这就是您试图做的,尽管它不接受输入,但功能很好

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]

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

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]

我建议使用字典,这样做更有效:

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}

我建议使用字典,这样做更有效:

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}

我们从0开始计数,因此对于列表x=[1,2,3],最后一个元素是x[2]。访问x[3]将引发一个异常我们从0开始计数,因此对于列表x=[1,2,3],最后一个元素是x[2]。访问x[3]将引发异常