【发布时间】:2012-12-20 10:39:16
【问题描述】:
我有一个看起来像这样的python dict
{'data': [{'data': [{'data': 'gen1', 'name': 'objectID'},
{'data': 'familyX', 'name': 'family'}],
'name': 'An-instance-of-A'},
{'data': [{'data': 'gen2', 'name': 'objectID'},
{'data': 'familyY', 'name': 'family'},
{'data': [{'data': [{'data': '21',
'name': 'objectID'},
{'data': 'name-for-21',
'name': 'name'},
{'data': 'no-name', 'name': None}],
'name': 'An-instance-of-X:'},
{'data': [{'data': '22',
'name': 'objectID'}],
'name': 'An-instance-of-X:'}],
'name': 'List-of-2-X-elements:'}],
'name': 'An-instance-of-A'}],
'name': 'main'}
结构是重复的,它的规则是这样的:
- 字典包含“名称”和“数据”
- 'data' 可以包含字典列表
- 如果“数据”不是一个列表,它就是我需要的值。
- 'name' 只是一个名字
问题在于,对于每个值,我需要知道每个父级的每个信息。
所以最后,我需要打印一个包含如下项目的列表:
objectID=gen2 family=familyY An-instance-of-X_objectID=21 An-instance-of-X_name=name-for-21
编辑:这只是我想要作为输出的几行之一。对于没有作为“数据”的字典的每个项目,我都需要这样一行。
因此,对于每个不是 dict 的数据,向上遍历,查找信息并打印它..
我不知道模块中的每个函数,比如 itertools 和集合。但是里面有什么我可以使用的吗?这叫什么(当我尝试自己进行研究时)?
我可以找到很多“flatten dict”方法,但不是这样的,当我有'data','name'时不是这样的......
【问题讨论】:
-
我认为这是一个疯狂的字典?为什么你有这样的字典,它不是你能得到更好的吗?
-
这看起来很像
json数据。就是这样吗?如果是这样,你可以直接使用json模块 -
请给出这个应该如何工作的基本概念。样本输入,样本输出。以及您尝试过的功能。
-
看看这个字典,我要做的第一件事就是在每个级别上转换每个字典,从拥有
'data'键和@987654325 @key 使'name'值成为指向'data'值的键。这将减少查看、思考和使用的痛苦。 -
我试图解析的数据以类似 yaml 的语法组织(但根本不是 yaml)。我将这个字典放在一个怪物列表中,因为列表中的一些名字会重复它们自己。因此,不是一堆键发生冲突,而是我必须存储它的方式。我从中获取此信息的来源是第 3 方信息脚本,它为我提供了一些数据结构的概述。
标签: python parsing dictionary