Как извлечь один элемент из вложенного словаря в Python - PullRequest
0 голосов
/ 10 ноября 2011

Я читаю из файла с такими данными:

{"day" :"Monday", "alarm":"on", "kids":"School" , "work":"days"}
{"day" :"Tuesday", "alarm":"on", "kids":"School" , "work":"days"}
{"day" :"Wednesday", "alarm":"on", "kids":"School" , "work":"days"}
{"day" :"Thursday", "alarm":"on", "kids":"School" , "work":"nights"}
{"day" :"Friday", "alarm":"on", "kids":"School" , "work":"nights"}
{"day" :"Saturday", "alarm":"off", "kids":"Dance" , "work":"overtime"}
{"day" :"Sunday", "alarm":"off", "kids":"Soccer" , "work":"off"}

Я помещаю данные в словарь, затем оцениваю словарь для некоторого условия и помещаю этот словарь в другой словарь, например:

import ast
o=open('schedule.txt','rb')
day_={}
for lines in o:
    dict_={}
    dict_= ast.literal_eval(lines)
    if dict_['day']=='Monday':
        day_['1']=dict_.items()
    elif dict_['day']=='Tuesday':
        day_['2']=dict_.items()
    elif dict_['day']=='Wednesday':
        day_['3']=dict_.items()
    elif dict_['day']=='Thursday':
        day_['4']=dict_.items()
    elif dict_['day']=='Friday':
        day_['5']=dict_.items()
    elif dict_['day']=='Saturday':
        day_['6']=dict_.items()
    elif dict_['day']=='Sunday':
        day_['7']=dict_.items()
    else:
        print('there was an error')
o.close()
print day_.items()
#this seems to work properly

Теперь, если я хочу узнать, чем занимаются дети в четвертый день, как мне это сделать? Или есть более простой способ хранения данных для последующего использования в программе?

1 Ответ

2 голосов
/ 10 ноября 2011

Вы можете упростить свой код, используя словарь для сопоставления названий дней недели и чисел.Чтобы извлечь элемент записи "kids" для дня 4, вы можете использовать result[4]["kids"]:

days = {"Monday": 1, "Tuesday": 2, "Wednesday": 3, "Thursday": 4,
        "Friday": 5, "Saturday": 6, "Sunday": 7}
result = {}
with open('schedule.txt', 'rb') as f:
    for line in f:
        d = ast.literal_eval(line)
        result[days[d["day"]]] = d
print result[4]["kids"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...