2016-11-14 2 views
0

Итак, я написал функцию, которая читает в CSV-файле и создает словарь аббревиатур и их значение. Теперь я ищу, чтобы создать главную функцию, которая вызывает функцию словаря create, а затем запрашивает у пользователя ключи, но я не уверен, как получить доступ к созданному словарю.Передача словаря или его ключей как значений функции

import csv 

def CreateDictionary(fileName): 

    with open(fileName, 'r') as f: 
     reader = csv.reader(f) 
     newDict = {} 
     for x, y in reader: 
      newDict.setdefault(x, []).append(y) 
     return newDict 



def main(): 
    CreateDictionary('textToEnglish.csv') 
    key = input("Please enter a text abbreviation") 
    for key, value in newDict: 
+2

в CreateDictonary(), вы создаете и заполняете newDict и возвращаете его, но ваша основная функция не присваивает этому возвращаемому значению что-либо. Зачем? –

+0

Не знал, что я тоже ... Думал, что если он был возвращен, он был доступен. –

+0

Yup, переменная newDict (в основном) доступна только внутри функции, где она была создана. Это называется областью. – Moberg

ответ

2

Вам необходимо присвоить возвращаемое значение функции CreateDictionary некоторых переменные, как это:

newDict=CreateDictionary('textToEnglish.csv') 

Таким образом, вы можете получить доступ к детали в словаре так:

newDict["etc"] 
+0

Последующий вопрос, не знаете ли вы, почему это даст мне ошибку: ValueError: слишком много значений для распаковки (ожидается 2) –

+0

@KelvinDavis вы используете split() где-нибудь? – Buzz

+0

Нет, но я исправил ошибку, используя .items() –

1

Вы должны сохранить возвращаемое значение CreateDictionary в переменную.

myDict = CreateDictionary('textToEnglish.csv') 

Кстати: Вы должны переименовать переменную key, потому что он будет переписан в цикле for.

Смежные вопросы