python - 为什么 dict({4 :None}) returns {4: None} but dict([{4, None}]) 返回 {None : 4} in Python 3. 11

标签 python dictionary python-3.11

我在摆弄 dict() 并发现当我这样做时

>>> dict({4:None}) 它返回 {4: None} 这是预期的,但是,

当我尝试转换包含嵌套集的列表时[{4,None}]

>>> dict([{4,None}]) 返回 {None: 4} 这确实出乎意料。

然后我检查它只发生在少数整数上。这太疯狂了。

例如dict([{5,None}]) 返回 {None: 5}

dict([{6,None}]) 返回 {None: 6}

dict([{7,None}]) 返回 {None: 7}

虽然

dict([{8,None}]) 返回 {8: None}

dict([{9,None}]) 返回 {9: None}

有人能回答一下吗?我正在使用Python 3.11

最佳答案

dict内置支持三种创建字典的方式:

class dict(**kwargs)
class dict(mapping, **kwargs)
class dict(iterable, **kwargs)

第一种方式类似于dict(a=0, b=1)。第二种方式类似于问题中使用的 dict({4:None}) 。第三种方法是这里感兴趣的一种,正常用法是提供可迭代的键和值对,例如像这样:

>>> data = [("a", 0), ("b", 1), ("c", 2)]
>>> dict(data)
{'a': 0, 'b': 1, 'c': 2}

通过使用包含一组两个元素的列表,您会意外触发该代码路径。集合没有顺序,因此您是否返回 {None: 4}{4: None} 在这里是任意的。

关于python - 为什么 dict({4 :None}) returns {4: None} but dict([{4, None}]) 返回 {None : 4} in Python 3. 11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74758298/

相关文章:

python - 类型错误 : products() got multiple values for argument 'pk'

python - 导入cv2.py错误;无法安装 Python cv2

python - 如何从字典中检索多个项目对

iphone - 使用 iPhone iOS Xcode 4 的 map View 或谷歌地图显示当前位置到目的地

C# 字典 - 一个键,多个值

python - 为什么在 oracledb/cx_Oracle (Python) 中不调用输出转换器进行字节转换?

python - 如何在 matplotlib 中将文本框直接放置在图例下方?

python - 如何检测公共(public)元素列表和至少包含 1 个公共(public)元素的组列表?

python - 如果 'start' 参数是自定义类的实例,为什么 sum 函数会变慢?