python - 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}]
解决方案
一个 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 恰好是一对。
推荐阅读
- python - 显示多个进度条并立即更新它们而无需打印额外的行
- java - Scala 运行时错误:NoClassDefFound,即使库存在
- javascript - 为 datalist 设置默认值不允许用户更改选择
- c# - 使用 Visual Studio 创建 T-SQL 表单
- c# - 仅可见行的列总和
- postgresql - 如何在两个 AWS RDS db 实例之间复制 postgresql 数据库(在不同的 VPC 但相同的区域)?
- sql - 如何从多个选择中删除 union all 并使其成为一个查询
- rhel - 如何在 LS 命令结果中包含包含路径(完整或相对)
- angular - Angular6 - 产品构建无法访问
- javascript - 过滤映射并返回 id 数组