首页 > 解决方案 > python字典奇怪的行为与dict作为容器

问题描述

这是问题的简化代码片段

>>> dict ({'A': 58, 'B': 130} for _ in range(1))
{'A': 'B'}

我期待它返回传入的同一个字典。

如果我做

>>> dict({'A': 58, 'B': 130})

我得到了我正在寻找的东西,那就是 {'A': 58, 'B': 130}

为什么这种行为不同,如何解决?我不能在那里改变表达式,但我可以以任何我喜欢的方式改变输入字典,例如,我可以像 [{'A': 58, 'B': 130}]

标签: pythonpython-2.7dictionary

解决方案


一个 dict 可以用另一个 dict 或一个可迭代的对初始化,这就是你给它的。请注意,迭代 dict 只会产生它的键。

>>> d = {'A': 58, 'B': 130}
>>> list(d)
['A', 'B']
>>> dict([('A', 'B'), ('C', 'D')])
{'A': 'B', 'C': 'D'}
>>> dict([d, ('C', 'D')])
{'A': 'B', 'C': 'D'}

Python 的行为与指定的完全一致。你的 dict 恰好是一对。


推荐阅读