добавление во вложенные словари в python - PullRequest
0 голосов
/ 28 мая 2018

У меня есть вложенный словарь в виде:

self.emoji_per_word = {0: {'worte': 0, 'emojis': 0, '#': 0}}

Теперь мне нужно добавить больше словари к этому, как моя программа работает.Я делаю это:

worte = 0

emoji = 0

# some code that assigns values to the 2 variables and creates the time_stamp variable

if time_stamp in self.emoji_per_word:
   self.emoji_per_word[time_stamp]['worte'] = self.emoji_per_word[time_stamp]['worte'] + worte
   self.emoji_per_word[time_stamp]['emojis'] = self.emoji_per_word[time_stamp]['emojis'] + emojis
else:
   self.emoji_per_word[time_stamp]['worte'] = worte
   self.emoji_per_word[time_stamp]['emojis'] = emojis

Как видите, я пытаюсь проверить, существует ли ключ time_stamp и если да, обновить значение с новыми данными.Если нет, я хочу создать ключ time_stamp и присвоить ему начальное значение.Однако я получаю ключевую ошибку, как только программа выходит за начальное значение (см. Вверху).

Exception in thread Video 1:
Traceback (most recent call last):
  File "C:\Anaconda\lib\threading.py", line 916, in _bootstrap_inner
    self.run()
  File "C:\MA\Code\jsonparser_v2\jsonparser_v2.py", line 418, in run
    self.process_json()
  File "C:\MA\Code\jsonparser_v2\jsonparser_v2.py", line 201, in process_json
    self.emoji_per_word[time_stamp]['worte'] = worte
KeyError: 1

В конце я хочу получить что-то вроде этого:

self.emoji_per_word = {0: {'worte': 20, 'emojis': 5, '#':0.25}, 1: {'worte': 20, 'emojis': 5, '#':0.25}}  

Что такоеЯ тут не так делаю?

1 Ответ

0 голосов
/ 28 мая 2018

Вы получаете сообщение об ошибке, потому что self.emoji_per_word[time_stamp] не существует, когда time_stamp != 0, поэтому вам нужно сначала создать словарь, прежде чем присваивать ему значения, например:

else:
    self.emoji_per_word[time_stamp] = {}
    self.emoji_per_word[time_stamp]['worte'] = worte
    self.emoji_per_word[time_stamp]['emojis'] = emojis
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...