[英]def python function would not return
所以我想從 JSON 文件中制作清單,為什么這個代碼不會返回任何東西?
import os
import json
def get_data():
with open(os.path.dirname(os.path.realpath(__file__))+"/items.json") as f:
data = json.load(f)
return data
def save_data(data):
with open(os.path.dirname(os.path.realpath(__file__))+"/items.json", "w") as f:
json.dump(data, f, indent=4)
def modify_item(name,category,mode):
data = get_data()
temp = data[str(category)]
y = {str(name): 1}
if mode == "+":
for index in range(len(temp)):
if data[str(category)][int(index)][str(name)] == str(name):
data[str(category)][int(index)][str(name)] += 1
return data
elif mode == "-":
data[str(category)][int(index)][str(name)] -= 1
return data
elif mode == "a":
temp.append(y)
return data
save_data(modify_item(name="Potato fries", category="Foods", mode="+"))
json文件
{
"Foods": [
{
"Potato fries": 1
}
],
"Misc": [
{
"Disc": 1
}
]
}
它不會改變“薯條”鍵。 控制台只是沒有顯示錯誤,有人解釋原因嗎?
在“+”模式下,您的條件永遠不會滿足,因為您將名稱(字符串)與字典中字段名稱的值(在本例中為 int)進行比較。
當然不是最好/最干凈的方法,但如果你只是用 try 和 except 語句替換你的 if ,它就可以工作:
try:
data[str(category)][int(index)][str(name)] += 1
except:
print("Name given is not in the available categories.")
break
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.