我在摆弄 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/