我有一个带登录和整数值的JSON文件(某些结果),如下所示:
[
{
"name":"Tamara",
"results":"434.545.234.664"
},
{
"name":"Ted",
"results":"434.545.234.664"
}
]
我需要接收用户登录名(name),在JSON中查找插入的名称。如果它已存在,请在“结果”中添加一些数字。
例如:如果我输入“Ted”,某些数字将附加到Ted的结果中:"results":"434.545.234.664+4343}"
如果名称不存在,请使用以下内容添加新记录:
{
"name":"new_name",
"results":"some_number"
}
在其中。
我的代码无效:
with open('/Users/users_db.json') as jsonfile:
user_name = ''
while user_name == '':
data = json.load(jsonfile)
user_name = input('Your name: ')
for user in data:
if user_name in user['name']:
print('Old user')
break
else:
print('New user')
答案 0 :(得分:1)
以下是编码问题的众多可能方法之一:
import json
import random
import names
random.seed(1)
data = [
{
"name": "Tamara",
"results": "434.545.234.664"
},
{
"name": "Ted",
"results": "434.545.234.664"
}
]
def foo(lst, name):
some_number = random.randint(0, 4343)
values = filter(lambda d: d["name"] == name, lst)
if values:
for v in values:
v["results"] += "+{0}".format(some_number)
else:
lst.append({
"name": name,
"results": some_number
})
for name in ["Tamara", "Ted"] + [names.get_first_name() for i in range(8)]:
foo(data, name)
print(data)
这个将使用names模块生成随机测试名称。
一个建议虽然需要一些时间来阅读帮助页面,尤其是名为"What topics can I ask about here?"和"What types of questions should I avoid asking?"的部分。更重要的是,请阅读the Stack Overflow question checklist。您可能还想了解Minimal, Complete, and Verifiable Examples
答案 1 :(得分:0)
你可以parse your json喜欢这个
import json
with open('yourJsonFile.json') as example_data:
data = json.load(example_data)
现在,与data
合作,找到你需要的东西。例如,要访问您可以执行的名字
data[0]['name']
其余的取决于您存储名称的位置和方式,并检查它们是否已存在。
最后,要添加新值,您可以使用append