Запись словаря в файл python - PullRequest
1 голос
/ 12 июля 2020

Я хочу записать в файл сложный Список словарей. Ниже приведен мой список словарей:

[
  {
    "Year": "2015",
    "Movies": {
      "type": "Horror",
      "Total Hours": "3",
      "Trimmed": 3000,
      "List": [
        {
          "date": "20/10/15",
          "time": "10:00:00",
          "type": "Horror",
          "text": "abcjsaadasd",
          "start": 00:00:00,
          "end": 02:59:13
          "Hero":"asfaf"
        },
        {
          "date": "22/10/15",
          "time": "11:00:00",
          "type": "Horror",
          "text": "sdvsdnsdfa",
          "start": 00:00:00,
          "end": 02:55:10,
          "Hero":"dsvsfs"
        }
      ]
    }
  },
  {
    "Year": "2016",
    "Movies": {
      "type": "Thriller",
      "Total Hours": "3",
      "Trimmed":100,
      "List":[]
    }
  }
]

Я знаю, как писать в файл в Python, но не знаю, как разбирать такой сложный список словарей.

Также мне нужно проверить List, и если он пуст, я должен стереть этот словарь (Eg: The second dictionary present in the above data).

Пожалуйста, помогите мне решить эту проблему. Большое спасибо!

Ответы [ 3 ]

1 голос
/ 12 июля 2020

Попробуйте следующее:

import json
# filter out all dicts with empty List
filtered_data = [d for d in data if d.get("Movies", {}).get("List")] 
# write the filtered data 
with open("output.json", "w") as f:
    json.dump(filtered_data, f) into a file
1 голос
/ 12 июля 2020

Хотите записать сложные объекты в файл? Затем попробуйте Pickle его.

(Вышеуказанные ответы хороши, но поделитесь другим способом)

Pickle - это способ сериализовать объект python и сохранить его в файл. Как только вы это сделаете, вы де-сериализуете обратно, когда захотите.

Для записи

import pickle
mylist = ['a', 'b', 'c', 'd'] # Instead of list, this can be you dict or so,..
with open('datafile.pickle', 'wb') as fh:
   pickle.dump(mylist, fh)

Для чтения

import pickle
pickle_off = open ("datafile.txt", "rb")
emp = pickle.load(pickle_off)
print(emp)

Ссылка: https://www.tutorialspoint.com/python-pickling

Что касается части пустого списка проверки, вы можете использовать функцию len, если она пуста, и делать как требуется.

1 голос
/ 12 июля 2020

Для чего-то вроде этого я бы использовал его для записи в файл JSON. Вы можете сделать это вот так

import pandas as pd
df = pd.DataFrame(your_complex_dataset)
df.to_json('file_name.json')
...