字典中的字典列表 - Python
我有一个情况需要通过编程方式构建以下结构(是的,我知道有 .setdefault 和 defaultdict,但我无法得到我想要的结果)
我基本上需要一个字典,里面有一个字典的字典,这个字典是在循环中创建的。一开始这个结构是完全空的。
结构示例(请注意,我想在代码中创建一个具有这种结构的数组!)
RULE = {
'hard_failure': {
4514 : {
'f_expr' = 'ABC',
'c_expr' = 'XF0',
}
}
}
需要创建这个的伪代码:
...
self.rules = {}
for row in rows:
a = 'hard_failure'
b = row[0] # 4514
c = row[1] # ABC
d = row[2] # XF0
# Universe collapse right after
self.rules = ????
...
上面的代码显然是不能工作的,因为我不知道该怎么做!
5 个回答
0
我最喜欢处理嵌套字典和字典列表的方法是使用 PyYAML。详细信息请查看这个回答。
1
rules = {}
failure = 'hard_failure'
rules[failure] = []
for row in rows:
#this is what people are referring to below. You left out the addition of the dictionary structure to the list.
rules[failure][row[0]] = {}
rules[failure][row[0]]['type 1'] = row[1]
rules[failure][row[0]]['type 2'] = row[2]
这是我根据我理解的问题所创建的内容。我不太确定该怎么称呼'f_expr'和'c_expr',因为你从来没有提到这些是从哪里来的,但我猜它们应该是结果集中已经存在的列名或者某种结构中的名称。
在你进行的过程中,继续往这个结构里添加内容就可以了。
5
你发的例子不是有效的Python代码,我只能猜测你想做的事情可能是这样的:
self.rules[a] = [{b:{'f_expr': c, 'c_expr': d}}]
这样一来,self.rules
就变成了一个字典,里面包含了一个字典的列表,而这个字典又是一个字典。我敢打赌,有更简单的方法可以做到这一点。