python - 嵌套的两个 OrderedDict 之间的比较
问题描述
我想比较两个嵌套的orderedDict dict,我必须比较dict1 Vs dict2的每个键。
>>> dict1 = OrderedDict([('a', OrderedDict([('b', '20'),
('c', '30'),('d', OrderedDict([('e', '40')]))]))])
>>> dict2 = OrderedDict([('a', OrderedDict([('b', '20'),
('c', '30'),('d', OrderedDict([('e', '50')]))]))])
for k,v in dict1.iteritems():
for k1,v1 in v.iteritems():
print "key %s, value %s" %(k1,v1)
for k2,v2 in dict2.iteritems():
for k3,v3 in v2.iteritems():
print "key %s, value %s" %(k3,v3)
输出:
key b, value 20
key b, value 20
key c, value 30
key d, value OrderedDict([('e', '50')])
key c, value 30
key b, value 20
key c, value 30
key d, value OrderedDict([('e', '50')])
key d, value OrderedDict([('e', '40')])
key b, value 20
key c, value 30
key d, value OrderedDict([('e', '50')])
由于代码很长,请帮助编写比较(k1,v1)与(k3,v3)之间的比较
解决方案
数据:
dict1 = OrderedDict([('a',
OrderedDict([('b', '20'),
('c', '30'),
('d', OrderedDict([('e', '40')]))]))])
dict2 = OrderedDict([('a',
OrderedDict([('b', '20'),
('c', '30'),
('d', OrderedDict([('e', '50')]))]))])
也许解压OrderedDicts
成 aDataFrame
是一个更好的选择:
import pandas as pd
from pandas.io.json import json_normalize
dict_list = [dict1, dict2] # more OrderedDicts can be added
df = pd.concat([json_normalize(x) for x in dict_list], sort=True).reset_index(drop=True)
df =
如果keys
不同,也可以使用:
打印product
行数df
:
from itertools import product
dict_product = [list(product(df.iloc[y-1], df.iloc[y])) for y in df.index if y != 0]
print(dict_product)
[[('20', '20'),
('20', '30'),
('20', '50'),
('30', '20'),
('30', '30'),
('30', '50'),
('40', '20'),
('40', '30'),
('40', '50')]]
推荐阅读
- python - 在 Python 中读取和搜索文件时出现问题
- 3d - 3D 对象非常小且偏离中心
- jhipster - JHipster 7.0.1 从蓝图错误生成应用程序
- android - 如何在Android中将扩展的FAB按钮变成具有双重动作的拆分按钮
- docker - Docker Compose:自定义容器名称不适用于 docker-compose down
- linux - 颤振:使用 | Process.runsync 中的符号
- javascript - express res.render 选项导致空对象
- android - 找不到android对命令(无线调试)
- python - ATBSWP2第8章实践项目:如何使用时间模块设置定时输入?
- python - Sqlite 数据库访问:没有这样的表(在 Django 中没有模型)