dict_items对象没有'sort'属性。

39
3个回答

86

虽未测试但有一个猜想:您正在使用Python3!

来自https://docs.python.org/3/whatsnew/3.0.html

字典方法dict.keys()、dict.items()和dict.values()返回“视图”而不是列表。例如,这个不再起作用:k = d.keys(); k.sort()。请改用k = sorted(d)(这在Python 2.5中也有效,并且效率相同)。

据我理解,“视图”是一个迭代器,而迭代器没有sort函数。将其改为

sorted(all_colors)

根据文档


据我理解,“视图”是一个迭代器。实际上不是这样的,但视图是可迭代的。视图基本上是一个代理对象,因此您可以获得代表具有恒定空间/时间开销的字典中项目的对象。这经常用于在字典中迭代键值对,是的,但它还支持其他方便的方法,例如类似集合的操作。在此处阅读更多信息:https://docs.python.org/3/library/stdtypes.html#dictionary-view-objects - juanpa.arrivillaga

9

因此,基于Johan的答案,总体解决方案如下:

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

3
我相信 sort() 方法不再支持 Python 3.x
需要将对应的变量传递给sorted(all_colors)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接