字典中的字典列表 - Python

2 投票
5 回答
13233 浏览
提问于 2025-04-15 16:55

我有一个情况需要通过编程方式构建以下结构(是的,我知道有 .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 就变成了一个字典,里面包含了一个字典的列表,而这个字典又是一个字典。我敢打赌,有更简单的方法可以做到这一点。

撰写回答