当前位置: 首页 > 面试题库 >

TypeError:“ dict_keys”对象不支持索引

濮阳原
2023-03-14
问题内容
def shuffle(self, x, random=None, int=int):
    """x, random=random.random -> shuffle list x in place; return None.

    Optional arg random is a 0-argument function returning a random
    float in [0.0, 1.0); by default, the standard random.random.
    """

    randbelow = self._randbelow
    for i in reversed(range(1, len(x))):
        # pick an element in x[:i+1] with which to exchange x[i]
        j = randbelow(i+1) if random is None else int(random() * (i+1))
        x[i], x[j] = x[j], x[i]

当我运行该shuffle函数时,它会引发以下错误,这是为什么呢?

TypeError: 'dict_keys' object does not support indexing

问题答案:

显然,您正在传递d.keys()shuffle函数。可能是用python2.x编写的(d.keys()返回列表时)。使用python3.x时,d.keys()返回一个dict_keys行为更像a而set不是a的对象list。因此,无法对其进行索引。

解决方案是将list(d.keys())(或简单地list(d))传递给shuffle



 类似资料:
  • 问题内容: 我有这个查询: 我收到以下错误: some_id是一个整数,但我想选择具有some_id = 1的指标(或任何我决定放入变量的#)。 问题答案: 这会将参数转换为可索引的列表。假设您的方法像我想的那样工作,这应该工作。 发生错误是因为该方法中的某个地方,它可能试图遍历该输入或直接对其进行索引。可能是这样的: 通过使其成为列表(或可迭代的),您就可以像这样将其索引到第一个元素中。 您还可

  • 问题内容: 我正在按照课堂作业的说明进行操作,并且应该在文本文件中查找前200个最常用的单词。 这是代码的最后一部分: 但是,当我在vocab 200行之后按Enter键时,它将返回: 关于如何解决此问题的任何建议,以便它可以正确返回答案? 问题答案: 看起来您正在使用Python3。在Python 3中,返回一个可迭代但不可索引的对象。最简单(但效率不高)的解决方案是:

  • 问题内容: 这是我的代码: 使用python 2.7.3时,这完全可以正常工作;但是,当我使用python 3.2.3时,出现错误提示。如何修改代码使其与3.2.3兼容? 问题答案: 在Python3中,(以及和一起)返回,而不是列表。请参阅此处的文档。因此,您需要将呼叫包装到一个呼叫中,例如:

  • 问题内容: 我正在查看一些代码,并尝试将其翻译为,但是我仍然停留在本节中。任何人都可以澄清出什么问题吗? 这是给出的错误: 问题答案: 在Python 3中,返回一个惰性序列对象-它不返回列表。无法重新排列范围对象中的元素,因此不能重新排列它。 改组之前将其转换为列表。

  • 问题内容: 我尝试运行以下代码: 但是我在最后一行出现错误: 似乎我无法分配张量,如何解决? 问题答案: 通常,TensorFlow张量对象不可分配*,因此您不能在分配的左侧使用它。 做您想做的事情的最简单方法是构建张量的Python列表,并在循环结束时将它们在一起: *除对象外,使用etc.方法。但是,可能返回不支持此方法的对象。

  • 问题内容: 我在python中编写一个简单的排序程序,遇到此错误。我想交换列表元素,但返回错误。我在下面附上错误和相关程序。 码: 问题答案: 计算“ 1,2,3”的结果为。正如您所发现的,元组是不可变的。处理前转换为列表。