web-dev-qa-db-ja.com

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

21
user960567

テストしていないが、理論:python3を使用している!

https://docs.python.org/3/whatsnew/3.0.html から

dictメソッドdict.keys()、dict.items()およびdict.values()は、リストの代わりに「ビュー」を返します。たとえば、これは機能しなくなりました。k = d.keys(); k.sort()。代わりにk = sorted(d)を使用してください(これはPython 2.5でも機能し、同様に効率的です)。

私が理解しているように、「ビュー」はイテレーターであり、イテレーターにはソート機能がありません。に変更する

sorted(all_colors)

文書によると

43
Johan

したがって、ヨハンの答えに基づいたトータルソリューションは次のとおりです。

all_colors = sorted(reportlab.lib.colors.getAllNamedColors().items())
5
Klamer Schutte