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

Python 3上的dict.keys()[0]

杨选
2023-03-14
问题内容

我有这句话:

def Ciudad(prob):
    numero = random.random()
    ciudad = prob.keys()[0]
    for i in prob.keys():
        if(numero > prob[i]):
            if(prob[i] > prob[ciudad]):
                ciudad = i
        else:
            if(prob[i] > prob[ciudad]):
                ciudad = i

    return ciudad

但是当我调用它时会弹出此错误:

TypeError: 'dict_keys' object does not support indexing

是版本问题吗?我正在使用Python 3.3.2


问题答案:

dict.keys()是字典视图。list()如果需要键列表,则直接在字典上直接使用,项目0将是(任意)字典顺序中的第一个键:

list(prob)[0]

或者更好的还是使用:

next(iter(dict))

两种方法都可以在Python 2 3中使用,next()对于Python 2
,该选项肯定比使用更为有效dict.keys()。但是请注意,字典 没有 固定的顺序,您将 知道将首先列出哪些键。

似乎您正在尝试查找 最大 密钥,而max()与结合使用dict.get

def Ciudad(prob):
    return max(prob, key=prob.get)

对于任何给定的prob字典,函数结果肯定是相同的,因为您的代码在语句的随机数比较分支之间的代码路径中没有差异if



 类似资料:
  • 我使用CentOS(CentOSLinux版本7.5.1804(核心))远程(托管我的服务器,我想运行python脚本)最初安装了python2。 我安装了python3,但是,两个版本的路径似乎都无法识别: 奇怪的Python3确实已安装,路径无法识别。无法运行脚本文件(使用)。

  • 尝试连接到Azure CosmosDB mongo服务器会导致SSL握手错误。 我正在使用<code>Python3连接到我的Azure CosmosDB。如果我使用Python27运行代码,连接工作正常,但使用python 3时会导致以下错误: 在<code>Python3 pymongo.errors.ServerSelectionTimeoutError: SSL 握手失败: backend

  • 当我在PyCharm Community Edition中编写Python3代码时,我对导入逻辑感到恼火,下面是我的结构。 在app.py中,我使用以下代码导入orm。 它在PyCharm中看起来很好,但当我运行app.py时,由于以下错误,它将失败 它运行良好,但在Pycharm中有导入错误。它是。我想在PyCharm中使用代码跟踪,所以我想知道如何修复这个问题。

  • 本文向大家介绍ubuntu17.4下为python和python3装上pip的方法,包括了ubuntu17.4下为python和python3装上pip的方法的使用技巧和注意事项,需要的朋友参考一下 如果刚装上ubuntu会发现自带了python2和python3,但是发现系统没有带pip,所以输入下面的命令分别给他们装上pip: 以上这篇ubuntu17.4下为python和python3装上p

  • 问题内容: 我正在使用Python 3.2.1,但无法导入模块。我使用 和它的作品,但我不能使用它的是这样的: 我收到以下错误: 当我写的import StringIO时候说 问题答案: 当我写导入StringIO时,它说没有这样的模块。 从Python 3.0的新功能开始: 在和模块都没有了。而是导入io 模块,分别将或用于文本和数据。 。 修复一些Python 2代码以使其在中工作的可能有用的

  • 当我编写时,它说