如何在列表中的列表中添加值?

How add value in list inside list?

python代码 如果我有列表 [ [m,1],[n,5],[t,4] ]

我要我输入m加3,return我[m,4]

列表[ [m,4],[n,5],[t,4] ]

但如果我输入 f 并加 3,return 我 [f,3]

列表[ [m,1],[n,5],[t,4] ,[f,3] ]

这是我做的,但它是错误的


main_list=[ ["m",1],["n",5],["t",4]  ]

def items_in_list(input,add):
    if any(input in sublist for sublist in main_list):
        print("we have it")
        sublist[1]= +add


    else:
        ele = [input,add]
        main.append(ele)


items=input("enter you items: ")
add=int(input("enter you add: "))
items_in_list(items,add)

print(main_list)

我认为在这种情况下你应该使用字典而不是列表。 你可以这样做:

main_dict={
    'm': 1,
    'n': 5,
    't': 4,
}

def items_in_list(input_name,to_add, main_dict):
    try:
        main_dict[input_name] += to_add
    except:
        main_dict[input_name] = to_add

示例 1:

items_in_list('m',5, main_dict)
print(main_dict)

输出:

{'m': 6, 'n': 5, 't': 4}

示例 2:

items_in_list('k',5, main_dict)
print(main_dict)

输出:

{'m': 1, 'n': 5, 't': 4, 'k': 5}

您可以在 Python 列表中嵌套 Python 列表,如下所示:

>>> plist = [["a", 1], ["b", 1]]
>>> plist[0][1]

第二行将输出 1。然后加法将像通常在 Python 中那样工作:

>>> plist[0][1] += 2
>>> plist[0][1] 
3

尽管如此,D. Manasreh 和 Deepak 已经提出了一个很好的观点,即您要实现的目标最好用字典来实现。然而,你的问题的答案,你如何在列表中添加列表就是我上面描述的,你唯一没有做正确的事情只是正确使用 Python 中的字符串,这意味着你错过了“ " 在列表中的字符周围引用:

List [ [m,1],[n,5],[t,4] ,[f,3] ]

This is what I do but it is wrong

是的,因为这行会输出以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'm' is not defined

要使列表成为 Python 列表,请尝试:

[["m", 1], ["n", 5], ["t", 4], ["f", 3]]

您正在像处理文字一样处理 m, n, t 但实际上它们是未定义的变量。 在 Python 中使用文字的正确方法是用引号将文字括起来。

li = [['m', 1], ['n', 5], ['t', 4]]

def add_to_group(name_group, li, increment):
    for list_element in li:
        # print(list_element)
        if list_element[0] == name_group:
            list_element[1] += increment
    return li


li = add_to_group('m', li, increment=5)
print(li)

这对你有帮助。

kitchen_list=[ ['m',1],['n',5],['t',4]  ]

def items_in_list(item,add):
    if any(items in a for a in kitchen_list):
        lst = [[a[0],a[1]+add] if item in a else a for a in kitchen_list]

    else:
        lst = kitchen_list.copy()
        lst.append([item,add])        
    
    return lst

items=input("enter you items: ")
add=int(input("enter you add: "))
kitchen_list = items_in_list(items,add)
print(kitchen_list)

输出

IN: 'm', 1

OUT: [['m', 2], ['n', 5], ['t', 4]]


# -----------------------------#

IN: 'y', 12

OUT: [['m', 1], ['n', 5], ['t', 4], ['y', 12]]

我知道了

import pickle
from pathlib import Path

path_to_file = 'data.obj'
path = Path(path_to_file)

if path.is_file():
    print("you have data")
    fileObj = open("data.obj", 'rb')
    main_list = pickle.load(fileObj)
    fileObj.close()
else:
    print("you did not have data")
    main_list = {}
    fileObj = open("data.obj", 'wb')
    pickle.dump(kitchen_list, fileObj)
    fileObj.close()


def items_in_main(input_name,to_add, main_list):
    try:
        main_list[input_name] += to_add
    except:
        main_list[input_name] = to_add


items=input("enter you items: ")
add=int(input("enter you add: "))
items_in_main(items,add,main_list)

print(main_list)

fileObj= open("data.obj",'wb')
pickle.dump(main_list,fileObj)
fileObj.close()