步骤1:创建字典
dict1 = {"one": 1, "two": 2, "zero": 0}
步骤2:显示dict1的内容
dict1
{'one': 1, 'two': 2, 'zero': 0}
第3步:使用.items()创建视图对象
vwobj = dict1.items()
第4步:显示对象的内容(元组列表)
vwobj
dict_items([('one', 1), ('two', 2), ('zero', 0)])
第5步:根据值对字典进行“排序”(字典无法排序)
dict2 = sorted(vwobj, key=lambda p0: p0[1])
步骤6:显示dict2的内容(0、1、2“已排序”)
dict2
[('zero', 0), ('one', 1), ('two', 2)]
第7步:创建一个lambda函数(在sorted()函数之外)
def key(p0):
return p0[1]
第8步:并使用view对象作为其参数
key(vwobj)
TypeError: 'dict_items' object does not support indexing
步骤9:并出现TypeError。问题...为什么仅在sorted()函数的上下文中可以索引视图对象(我缺少什么)?
答案 0 :(得分:2)
您未在排序函数的上下文中为视图对象建立索引。在dict2 = sorted(vwobj, key=lambda p0: p0[1])
中,key
函数应用于vwobj
的 elements ,而不应用于vwobj
本身。因此,sorted()
函数正在评估('one', 1)[1]
等,这是可行的,而key(vwobj)
试图评估vwobj[1]
,这是无效的。