python - OrderdDict 的行为
问题描述
我正在回答关于 SO 的一个问题,我偶然发现了 的这种行为OrderedDict
,我无法解释。它如下你有一个看起来像这样的字典:
exmpl = OrderedDict([(30, ('A1', 55.0)), (31, ('A2', 125.0)), (32, ('A3', 180.0)), (43, ('A4', float('nan')))])
目标是删除其中包含的字典条目,nan
可以通过以下方式完成:
通过使用
for
循环for k,v in dict_cg.items(): if np.isnan(v[1]): exmpl.pop(k) print exmpl
输出将是
OrderedDict([(30, ('A1', 55.0)), (31, ('A2', 125.0)), (32, ('A3', 180.0))])
通过字典理解方法(同时将其定义为 OrderedDict)如下
exmpl = OrderedDict({k:v for k, v in dict_cg.items() if not np.isnan(v[1])}) print exmpl
返回
OrderedDict([(32, ('A3', 180.0)), (30, ('A1', 55.0)), (31, ('A2', 125.0))])
有人可以教育我,为什么在第二种情况下字典混乱会出现混乱。?
解决方案
因为您正在创建一个具有字典理解的普通字典,它具有任意顺序,然后您将其传递给构造OrderedDict
函数。
推荐阅读
- amazon-s3 - S3 Bucket 非加密 HLS 有效,但 CloudFront 无效
- apache-spark - Spark SQL 中使用的嵌套 java bean
- deployment - 在 JBOSS EAP 7.1 中,如何将 EJB 和 undertow 的统计启用设置为 True?
- c# - 如何在 web.config 中使用 url 重写重定向?
- haskell - 不是逆变/逆变/可分/可判定的好例子?
- visual-studio - 修复退出代码 -2147024891 JetBrains ResharperTestRunner 无法启动
- ruby-on-rails - 将对象导出到当前内联显示数据的 csv 文件
- xslt-2.0 - 无法在 XSLT 中使用 group by 对元素值进行分组
- c# - 如何更新用户的管理器?
- html - 时刻未设置为时间类型