gpt4 book ai didi

python - 在 Python 中添加字典条目并附加到 JSON 文件的最佳方法

转载 作者:行者123 更新时间:2023-12-01 01:52:09 51 4
gpt4 key购买 nike

我需要使用以下键向字典添加条目:

name
element
type

我希望每个条目都附加到一个 JSON 文件,我将在其中访问它们以用于项目的另一部分。

我下面的内容在技术上是可行的,但是(至少)有一些问题。

首先,它不会阻止重复输入。例如,我可以让“xyz”、“4444”和“test2”多次作为 JSON 条目出现。有没有办法纠正这个问题?

是否有一种更清晰的方法来编写实际的数据输入片段,以便当我将这些值输入到字典中时,它不会直接出现在括号中?

最后,还有更好的地方来放置 JSON 片段吗?它应该在函数内部吗?

只是想稍微清理一下。谢谢

import json

element_dict = {}


def add_entry(name, element, type):

element_dict["name"] = name
element_dict["element"] = element
element_dict["type"] = type
return element_dict


#add entry
entry = add_entry('xyz', '4444', 'test2')


#export to JSON
with open('elements.json', 'a', encoding="utf-8") as file:
x = json.dumps(element_dict, indent=4)
file.write(x + '\n')

最佳答案

这里有几个问题。值得一提的要点:

  • 用户可以使用 list 保存参数,并在将参数提供给 add_entry 时使用 *args 进行解包。
  • 要检查/避免重复,您可以使用 set 来跟踪已添加的项目。
  • 对于写入 JSON,现在您已经有了一个列表,您可以简单地迭代列表并在最后写入一个函数。

将这些方面放在一起:

import json

res = []
seen = set()

def add_entry(res, name, element, type):

# check if in seen set
if (name, element, type) in seen:
return res

# add to seen set
seen.add(tuple([name, element, type]))

# append to results list
res.append({'name': name, 'element': element, 'type': type})

return res

args = ['xyz', '4444', 'test2']

res = add_entry(res, *args) # add entry - SUCCESS
res = add_entry(res, *args) # try to add again - FAIL

args2 = ['wxy', '3241', 'test3']

res = add_entry(res, *args2) # add another - SUCCESS

结果:

print(res)

[{'name': 'xyz', 'element': '4444', 'type': 'test2'},
{'name': 'wxy', 'element': '3241', 'type': 'test3'}]

通过函数写入 JSON:

def write_to_json(lst, fn):
with open(fn, 'a', encoding='utf-8') as file:
for item in lst:
x = json.dumps(item, indent=4)
file.write(x + '\n')

#export to JSON
write_to_json(res, 'elements.json')

关于python - 在 Python 中添加字典条目并附加到 JSON 文件的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50610730/

51 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com