Как добавить ключ в словарь? (из существующих данных) - PullRequest
0 голосов
/ 16 марта 2020

Я сейчас пытаюсь создать словарь с разными ключами. Это мой код:

fh = open("plateau.txt", "r")
str=fh.read()
fh.close()

lines=str.split("\n")

d = dict()
currentKey = None
for line in lines:
    if ":" in line:
        currentKey    = line.strip(":")
        d[currentKey] = []
    else:
        d[currentKey].append(tuple(line.split(" ")))
print(d)

Как только я это сделаю, я получу словарь как таковой:

{'map': [('39', '41')], 'hubs': [('21', '3', '1500', '25'), ('21', '38', '1500', '25')], 'peaks': [('10', '10', '200'), ('11', '10', '300'), ('12', '10', '400'), ('10', '11', '200'), ('10', '12', '500'), ('',)]}

Я хотел бы сохранить map, концентраторы и пики в качестве ключей, но для добавления новых так, чтобы 'x': первое число в каждом , 'y': 2-й номер , эт c. Как мне это сделать? Я боюсь испортить свой код, потому что я чувствую, что я почти там! спасибо за помощь.

1 Ответ

2 голосов
/ 17 марта 2020

Замените tuple(line.split(" ")) на это:

{ k:int(v) for k,v in zip(("x","y","z","health"),line.split(" ")) }

Это даст вам кое-что, что, вероятно, будет легче манипулировать, чем наличие отдельных клавиш с трудно сопоставляемыми значениями между клавишами:

{ 
   'map': [{"x":39, "y":41}], 
  'hubs': [{"x":21, "y":3, "z":1500, "health":25}, {"x":21, "y":38, "z":1500, "health":25}], 
 'peaks': ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...