Найти - Пользователи
Полная версия: Создание двумерного словаря
Начало » Python для новичков » Создание двумерного словаря
1
zlodiak
ребят, помогите пожалуйста поправить скрипт:

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 : {}
—–
vrabey
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: ')
ругается если ввести алфавитный символ без кавычек
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB