【问题标题】:Why is a view object indexable in the context of the Python sorted() function?为什么视图对象在 Python sorted() 函数的上下文中是可索引的?
【发布时间】:2018-10-19 21:34:29
【问题描述】:

第 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 步:使用视图对象作为参数

key(vwobj)
TypeError: 'dict_items' object does not support indexing

第 9 步:和一个 TypeError 结果。问题......为什么只能在 sorted() 函数的上下文中索引视图对象(我错过了什么)?

【问题讨论】:

    标签: python sorting dictionary indexing


    【解决方案1】:

    您没有在排序函数的上下文中索引视图对象。在dict2 = sorted(vwobj, key=lambda p0: p0[1]) 中,key 函数应用于vwobj元素,而不是vwobj 本身。所以sorted() 函数正在评估('one', 1)[1] 等,这是可行的,而key(vwobj) 试图评估vwobj[1],这是行不通的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-31
      • 2011-06-11
      • 1970-01-01
      • 2022-12-03
      • 1970-01-01
      相关资源
      最近更新 更多