Python JSON добавить, если значение не существует - PullRequest
0 голосов
/ 22 марта 2020

У меня есть json файл с 30-я sh, блоками "dicts", где каждый блок имеет и ID, как здесь:

{
      "ID": "23926695",
      "webpage_url": "https://.com",
      "logo_url": null,
      "headline": "aewafs",
      "application_deadline": "2020-03-31T23:59:59",
}

Так как мой скрипт извлекает информацию в Аналогичным образом из API несколько раз я хотел бы добавлять новые «блоки» в файл json, только если идентификатор не существует в файле JSON.

У меня есть до сих пор получилось что-то вроде этого:

import os

check_empty = os.stat('pbdb.json').st_size
if check_empty == 0:
    with open('pbdb.json', 'w') as f:
        f.write('[\n]')    # Writes '[' then linebreaks with '\n' and writes ']'
output = json.load(open("pbdb.json"))

for i in jobs:
    output.append({
        'ID': job_id, 
        'Title': jobtitle, 
        'Employer' : company, 
        'Employment type' : emptype, 
        'Fulltime' : tid, 
        'Deadline' : deadline, 
        'Link' : webpage
    })

with open('pbdb.json', 'w') as job_data_file:
    json.dump(output, job_data_file)

, но я бы хотел выполнить только часть "output.append", если идентификатор не существует в файле Json.

Ответы [ 2 ]

0 голосов
/ 23 марта 2020

Я просто go с базой данных, ребята, спасибо за ваше время, мы можем закрыть эту ветку сейчас

0 голосов
/ 22 марта 2020

Я не могу завершить код, который вы предоставили, но я добавил пример, чтобы показать, как вы можете получить неповторяющийся список заданий (надеюсь, это поможет):

# suppose `data` is you input data with duplicate ids included
data = [{'id': 1, 'name': 'john'}, {'id': 1, 'name': 'mary'}, {'id': 2, 'name': 'george'}]

# using dictionary comprehension you can eliminate the duplicates and finally get the results by calling the `values` method on dict.
noduplicate = list({itm['id']:itm for itm in data}.values())

with open('pbdb.json', 'w') as job_data_file:
    json.dump(noduplicate, job_data_file)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...