Подтвердить что ты не робот

Объект dict_items не имеет атрибута 'sort'

Прежде всего, я новичок в Python. Я использую PTVS http://pytools.codeplex.com/. Затем я установил reportlab. Затем я запускаю пробную демонстрацию в https://github.com/nakagami/reportlab/blob/master/demos/colors/colortest.py#L68 Но в строке

all_colors = reportlab.lib.colors.getAllNamedColors().items()
all_colors.sort() # alpha order by name

Я получаю ошибку, dict_items object has no attribute sort

4b9b3361

Ответ 1

Не тестировали, а теорию: вы используете python3!

Из https://docs.python.org/3/whatsnew/3.0.html

dict methods dict.keys(), dict.items() и dict.values ​​() возвращают "представления" вместо списков. Например, это больше не работает: k = d.keys(); k.sort(). Вместо этого используйте k = sorted (d) (это также работает в Python 2.5 и так же эффективно).

поскольку я понимаю, что "представление" является итератором, а итератор не имеет функции сортировки. Измените его на

sorted(all_colors)

в соответствии с документацией

Ответ 2

Таким образом, общее решение на основе ответа Йохана:

all_colors = sorted(reportlab.lib.colors.getAllNamedColors().items())

Ответ 3

Я считаю, что метод sort() больше не поддерживает Python 3.x.

Необходимо передать соответствующую переменную в sorted(all_colors).