Питон: как преобразовать словарь в массив subscriptable?
Я знаю, как преобразовать словарь в список на Python, но как-то, когда я пытаюсь получить, скажем, сумму результирующего списка, я получаю ошибку 'dict_values' object is not subscriptable
. Кроме того, я планирую суммировать только несколько пунктов в списке.
dict={A:1, B:2, C:3, D:4}
list=dict.values()
SUM=sum(list[1:3])
при ближайшем рассмотрении я заметил, что когда полученный список распечатывается, он всегда дает dict_values(......)
как выход, который я не могу удалить. Как мне обойти это?
4 ответов
в python-3.X dict.values
не возвращает list
как и в python-2.X. В python-3.x возвращает dict-value
объект, который является set-подобным объектом и использует хэш-таблицу для хранения своих элементов. Эта функция, помимо поддержки самой set
атрибуты, он настолько оптимизирован для некоторых операций, таких как проверка членства (используя in
оператор). И из-за этого, он не поддерживает индексацию.
если вы хотите получить список объектов, вы должны преобразовать его в список, передающий результат в
путем назначения dict.значения () для списка u не преобразуют его в список u, просто хранят его как dict_values (может быть объектом). Чтобы преобразовать write list=list(dict.values())
. Теперь даже при печати list
U получит элементы списка, а не dict_values(......)
.
и, как упоминалось ранее, не используйте встроенные имена python в качестве имен переменных, это может вызвать конфликты во время выполнения и путаницу при чтении кода.
Да, это похоже на список старых вопросов Python, заданных здесь. Но, как сказал @Kasramvd, предполагая, что вы используете python 3.X,dict.values
- объект представления словаря.
(Кроме того, вы определенно придумали этот пример поспешно, поскольку у вас есть четыре словарных записи, но хотите 10 элементов списка, что является избыточным.)
@mgilson прав. Словарь по своей природе не упорядочен.
все же вы можете сделать это:
alpha = {"A":1,"B":2,"C":3,"D":4,"E":5} # dictionary
my_list = []
for key,value in alpha.items() :
my_list.append(value)
Вы можете получить доступ к вашим "ценностям" от my_list
, но это будет не в порядке.