如何在列表中的列表中添加值?
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()
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()