我有这句话:
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代码以使其在中工作的可能有用的
当我编写时,它说