Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 20, 2014 19:37:47

zlodiak
От: Россия
Зарегистрирован: 2014-01-19
Сообщения: 159
Репутация: +  0  -
Профиль   Адрес электронной почты  

Создание двумерного словаря

ребят, помогите пожалуйста поправить скрипт:

import shelve
db = shelve.open('data')
keys = ['id', 'type', 'number'];
def outputDB(db):
    for record in db:
        print(record, ': ', db[record])
        for item in db[record]:    
            print(item, '--', db[record][item])
        print('-----')
while 1:
    action = int(input('1 - print, 2 - write'))
    if(action == 1):
        outputDB(db)
        break
    else:
        index = input('введите индекс')
        db[index] = dict()
        for key in keys:
            print('enter value for ', key)
            value = str(input('enter value: '))
            db[index][key] = value
        outputDB(db)
db.close()    
print('stop')
по моей задумке здесь должно происходить следующее. пользователь выбирает режим ввода(то есть вводит число 2). далее ему предлагается заполнить двумерный словарь(db). он вводит индекс первого уровня(db) и 3 значения для второго уровня словаря(набор ключей определён в начале скрипта). таким образом должен получаться словарь с двумя уровнями вложенности. словарь сохраняется обращением к стандартному модулю shelve. после перезапуска скрипта пользователь может вывести в консоль содержание словаря db, введя 1 НО вместо словаря с двумя уровнями вложенности почему то в консоль выводится примерно следующее:

q : {}
—–
a : {}
—–

Офлайн

#2 Янв. 20, 2014 21:13:46

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

Создание двумерного словаря

zlodiak

import shelve
db = shelve.open('data')
keys = ['id', 'type', 'number'];
def outputDB(db):
    for record in db:
        print db[record]
        print(record, ': ', db[record])
        for item in db[record]:    
            print(item, '--', db[record][item])
        print('-----')
while 1:
    action = int(input('1 - print, 2 - write'))
    if(action == 1):
        outputDB(db)
        break
    else:
        index = str(input('введите индекс'))
        db[index] = dict()
        newDict = dict()  # в этот словать всё пишем
        for key in keys:
            print('enter value for ', key)
            value = input('enter value: ')
            newDict[key] = value
        db[index] = newDict      # и сохраняем его
        outputDB(db)
db.close()    
print('stop')
у меня Python 2.7.3
value = input('enter value: ')
ругается если ввести алфавитный символ без кавычек

Отредактировано vrabey (Янв. 20, 2014 21:26:19)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version