2016-12-11 2 views
0

Я пытаюсь передать словарь функции, чтобы он был первым параметром функции, и проверка этого типа выполняется, чтобы убедиться, что словарь действительно отправлен.Передача словаря в качестве параметра между функциями в python?

fridge = {"cheese":10, "milk":11, "feta":12, "cream":21, "onion":32, "pepper":14} 

def fridge_validation(fridge): 
    if not isinstance (fridge,dict) : 
     raise TypeError: ("require a valid dictionary to be submitted!") 

Я думал, что следующий будет работать ....

def dummy (fridge): 

return fridge 

test_of_dummy=dummy ({"cheese", "milk", "eggs"}) 

print (test_of_dummy) 

{'eggs', 'milk', 'cheese'} (this was what was printed) 

Не совсем уверен, что если бы я сделал это правильно? Также .... Я смущен следующим.

def dummy (fridge): 
    fridge={} 
    return fridge 





    test_of_dummy=dummy ({"cheese", "milk", "eggs"}) 
    print (test_of_dummy) "{}" was outputted... 

.

но я думал, что уже перешел на переменные ...? Итак, почему {}, казалось бы, имеет приоритет над test_of_dummy?

Как я пытаюсь сделать ....

1) Пропустите словарь под названием холодильник в качестве 1-го параметра функции. Используйте isinstance и введите ошибку, чтобы подтвердить, что словарь действительно словарь.

2) иметь вторую функцию, которая будет вычитать из словаря холодильник

ответ

1

Для того, чтобы подтвердить свой fridge переменную вы можете следовать этому примеру:

fridge = {"cheese":10, "milk":11, "feta":12, "cream":21, "onion":32, "pepper":14} 

def fridge_validation (fridge = {}): 
    # Test if fridge is a dict type 
    if not isinstance(fridge, dict): 
     # if fridge isn't a dict type, throw an exception 
     raise TypeError("require a valid dictionary to be submitted!") 
    # if fridge is a dict type return it. So you got your validation 
    else: 
     return fridge 

validation = fridge_validation(fridge) 
print(validation) 

Выход:

{'milk': 11, 'feta': 12, 'onion': 32, 'cheese': 10, 'pepper': 14, 'cream': 21} 

Однако {"cheese", "milk", "eggs"} является set type и не dict type.

Вы можете проверить это с помощью Python interpreter:

>> a = {"cheese", "milk", "eggs"} 
>> type(a) 
<class 'set'> 

Итак, как вы видите, {"cheese", "milk", "eggs"} является set не dict. Поэтому, если вы передадите его в свой fridge_validation(), ваш код выдаст исключение.

Кроме того, в методе:

def dummy(fridge): 
    fridge = {} 
    return fridge 

Возвращение всегда будет равна {}, которая является пустой dict type причиной является ваш код всегда будет перезаписать значение холодильник пустой Dict.

Ответ на ваш второй вопрос.

Как вы можете вычесть значения из вашего dict?Ответ прост:

Я полагаю, у вас есть диктор после проверки его с помощью метода fridge_validation(). Например:

validation = {"cheese":10, "milk":11, "feta":12, "cream":21, "onion":32, "pepper":14} 

Итак:

print(validation["cheese"]) 

выход:

10 

также:

print(validation["milk"]) 

выход:

11 

И так далее для отдыха. Итак, для того, чтобы вычесть значения из dict, вы можете использовать: dictionary["key"], это приведет к выводу значения ключа.

Кроме того, я рекомендую вам прочитать это tutorial, чтобы понять, как вы можете иметь дело с python dicts.

1

Примечание: {"cheese", "milk", "eggs"} представляет собой набор.

В вашей первой функции вы просто возвращаете аргумент, так что неудивительно, что вы получили. Во втором случае вы установите fridge на пустой набор перед его возвратом, чтобы вернуть пустой набор.

Все это кажется излишним, хотя, что именно вы пытаетесь сделать, и что вы имеете в виду, вы можете только манипулировать словарем один раз?

+0

Прошу прощения за то, что я могу только манипулировать словарем только один раз. Это была ошибка. В сущности, я написал функцию, чтобы взять словарь для холодильника, удалить ключ. У меня две программы запутались, я плохо. его 4 часа ночи здесь. Что касается того, что я пытаюсь сделать ... 1) Передайте словарь, называемый холодильником, как 1-й параметр для функции. Используйте isinstance и введите ошибку, чтобы подтвердить, что словарь действительно словарь. 2) Имейте вторую функцию, которая вычитает из словаря холодильника. – apronedsamurai

+0

@Iluvavatar, вы заявили, что {«сыр», «молоко», «яйца»} - это набор, это потому, что у меня не было какого-то имени_ предшествующего? – apronedsamurai

+0

'{" key1 ":" value1 "," key2 ":" value2 "}' is dict, потому что там есть ключи и значения. '{" value1 "," value2 "}' - это набор, потому что нет ключей, просто значений. – Iluvatar