为什么视图对象在Python sorted()函数的上下文中可索引?

时间:2018-10-19 21:34:29

标签: python sorting dictionary indexing

步骤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()函数的上下文中可以索引视图对象(我缺少什么)?

1 个答案:

答案 0 :(得分:2)

您未在排序函数的上下文中为视图对象建立索引。在dict2 = sorted(vwobj, key=lambda p0: p0[1])中,key函数应用于vwobj elements ,而不应用于vwobj本身。因此,sorted()函数正在评估('one', 1)[1]等,这是可行的,而key(vwobj)试图评估vwobj[1],这是无效的。