当前位置: 首页 > 知识库问答 >
问题:

Pythondict.get()或无场景[重复]

郦祯
2023-03-14

我正试图根据我拥有的键列表访问字典的值。如果该键不存在,则默认为无。但是,当值为空字符串“”时,我遇到了问题。请参阅下面的代码以了解我的示例

dict = {}
dict['key'] = ''
test = dict.get('key')
print(test)
>>

以上如预期,空字符串打印。但是现在看看当我默认dict.get()函数为无时会发生什么,如果键不存在

dict = {}
dict['key'] = ''
test = dict.get('key') or None
print(test)
>> None

为什么会发生这种情况?在第二个例子中,键是存在的,所以我的直觉说应该打印“”。Python如何应用该行代码的'or'子句?

下面是我用来访问字典的实际代码。请注意,字典中的许多键都将“”作为值,因此我的问题就出现了。

# build values list
params = []
for col in cols:
    params.append(dict.get(col) or None)

有人能提供最好的解决方案吗?我目前的解决方案如下,但我认为这不是最干净的选择

# build values list
params = []
for col in cols:
    if dict.get(col) is not None:
        params.append(dict.get(col))
    else:
        params.append(None)

共有3个答案

骆鸿运
2023-03-14

问题是,在python中,空字符串被认为是不正确的。例如,看看这段代码。

>>> x = 1 if "" else 0
>>> y = 1 if True else 0
>>> z = 1 if False else 0

x和z的值为0,y的值为1。

dict.get() returns None by default

或者使用defaultdict

屈博
2023-03-14

您可以简单地使用get的第二个参数。

dict.get(col, None)

第二个参数是找不到密钥时的默认值。或在这种情况下,取的东西之前或如果它是东西,否则采取的东西后或。

史绍晖
2023-03-14

当在字典中找不到提供的键时,默认情况下dict.get返回

在这些情况下,最好查阅文档:

获取(key[,默认])

如果key在字典中,则返回key的值,否则为默认值。如果未给出默认值,则默认值为无,因此此方法永远不会引发KeyError。

 类似资料:
  • 问题内容: 我正在寻找某种有关组织应用程序的建议。 当您拥有包含内容选择的主菜单时,请按一个按钮,则获取控制器有两个选择:a)更改当前显示主菜单的内容b)创建一个新场景并将舞台切换到该场景一 你在用什么 有什么最佳实践吗? 目前,我更喜欢a),因为我可以保持事物链接状态栏等,但这是“干净”的方式吗? 问题答案: 首先,需要考虑一些事情: 1)更改场景将取消链接到您附加到该事件处理程序的链接,并且可

  • 我想自动重试失败的测试,以提高测试的可靠性,类似于 Junit 中的 TestRule,我希望能够灵活地在测试周围插入逻辑,以便实现重试循环: > 我正在使用Cucumber-JVM,需要一个涉及Java或Gradle的解决方案 我通过Gradle javaexec尝试了以下cucumber选项: //--format pretty--format rerun--out tmp/rerun.txt

  • 有没有什么方法可以等待场景重新绘制? 我的问题是,我想用getChildren()向窗格添加一个注释。add()然后使用Node在此节点上触发事件。fireEvent(事件)。 但这项活动没有进行。我认为问题在于,在fireevent发生时,场景没有被重新绘制,因此此时节点不是新场景的一部分。 所以最好的办法是等待现场重新粉刷,然后启动活动。

  • 问题内容: 我有一个使用javafx Scene来渲染某些东西的应用程序,并且我想将该渲染结果放入我在Javafx中创建的某些GUI中。我该怎么做? 基本上,有一些容器可以放入场景,然后将其放入GUI。 抱歉,如果是新手问题,我是JavaFX的新手 问题答案: 该场景只有一个顶级父节点作为根。您可以获取它并放入另一个场景。

  • 场景能够让你在什么地方、摆放什么东西来交给three.js来渲染,这是你放置物体、灯光和摄像机的地方。 构造器 Scene() 创建一个新的场景对象。 属性 .autoUpdate : Boolean 默认值为true,若设置了这个值,则渲染器会检查每一帧是否需要更新场景及其中物体的矩阵。 当设为false时,你必须亲自手动维护场景中的矩阵。 .background : Object 若不为空,在

  • 场景是一个通过<a-scene>来表示的元素。场景是一个全局根对象,所有的实体都被包含在场景中。 场景从实体(Entity)类继承而来,因此它继承了实体类所有的属性和方法,可以附加组件以及在渲染循环之前等待所有子节点(例如,<a-assets>和<a-entity>)被加载完成。 <a-scene>帮助我们处理所有three.js和WebVR公式化代码: 设置画布(canvas),渲染器(rend