Здесь есть несколько вопросов.Основные моменты, на которые стоит обратить внимание:
- Использование может использовать
list
для хранения ваших аргументов и *args
для распаковки, когда вы предоставляете их add_entry
. - Для проверки/ избежать дубликатов, вы можете использовать
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')