Объект 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
Ответы
Ответ 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)
.