Python: печать значений словаря в функции - PullRequest
0 голосов
/ 23 мая 2018

Так что я пытался заставить это работать некоторое время.Я пытаюсь заставить эти словари перечислять все значения в двух словарях через функцию, если это имеет смысл.Он работает, однако, он печатает только строку окончательных значений двух словарей.

 dictionary = {
    "grades": "O",
    "grades": "E",
    "grades": "A",
    "grades": "P",
    "grades": "D",
    "grades":"T",
}
dictionary_means = {
    "means": "O is for Outstanding!  You're top level now!",
    "means": "E is for Exceeds Expectations!  Very well done, almost 
perfect!",
    "means": "A for Acceptable.  That's okay, hopefully it'll get you 
somewhere...",
    "means": "P is for Poor.  Is that the best you can do?",
    "means": "D is for Dreadful.  Well at least it's not T...",
    "means": "T is for Troll.  Wow, you're an idiot."
}
def owls_grades (grades):
    for v in grades.values():
        print("Your grade is {}. ".format(v))




def owls_means (means):
    for value in means.values():
        print ("{}".format(value))

print (owls_grades(dictionary))
print (owls_means(dictionary_means))

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Проблема здесь в том, что словари, которые определены, имеют одинаковые ключи.Словари в Python рассматриваются как «ассоциативные массивы».В отличие от последовательностей, которые индексируются диапазоном чисел, словари индексируются ключами, которые могут быть любого неизменного типа;строки и числа всегда могут быть ключами.Кортежи могут использоваться в качестве ключей, если они содержат только строки, числа или кортежи;если кортеж содержит какой-либо изменяемый объект прямо или косвенно, он не может использоваться в качестве ключа.Вы не можете использовать списки в качестве ключей, поскольку списки могут быть изменены на месте с помощью назначений индексов, назначений срезов или таких методов, как append () и extension ().

Идея использования словаря заключалась в том, чтобы иметь быстрый поисквместо последовательного поиска.У вас должен быть уникальный ключ, с помощью которого вы можете искать ключ, чтобы получить соответствующее значение.И если определение одного и того же ключа с разными значениями, цель использования словаря не выполняется.

>>>
>>> dictionary = { 'key1' : 'value1', 'key2': 'value2'}
>>> dictionary['key1']
'value1'
>>> dictionary['key2']='value21'
>>> dictionary
{'key2': 'value21', 'key1': 'value1'}
>>>
0 голосов
/ 23 мая 2018

Вы дублируете ключи словаря, таким образом, значение перезаписывается при каждом повторении ключа.

Вот пример, демонстрирующий невозможность дублирования ключа словаря.

d = {'A': 1, 'A': 2}

print(d)  # {'A': 2}

Вместо этого dictionary_means, например, должно выглядеть следующим образом.

dictionary_means = {
    "O": "O is for Outstanding!  You're top level now!",
    "E": "E is for Exceeds Expectations!  Very well done, almost 
perfect!",
    "A": "A for Acceptable.  That's okay, hopefully it'll get you 
somewhere...",
    "P": "P is for Poor.  Is that the best you can do?",
    "D": "D is for Dreadful.  Well at least it's not T...",
    "T": "T is for Troll.  Wow, you're an idiot."
}

Что касается dictionary, кажется, dict - это не та структура данных, которую вы хотите.Вместо этого используйте list, если ваша цель - перечислить допустимые значения оценок.

["O", "E", "A", "P", "D", "T"]
...