如何在嵌套字典中分配列表的值?

时间:2019-08-28 03:42:48

标签: python-3.x

我正在尝试将列表中的值分配给嵌套词典中的某些键。我遇到的问题很可能是循环问题,因为我能够在正确的键中输入值,但是它们都是重复的。

我尝试将其转换为没有运气的词典列表,但理想情况下,它应作为字典保留在最后

dictionaries_list = {}
factors = {"var": [],
            "card": [],
            "val": []}


potential = [['0.5 0.5'], ['0.2 0.8'], ['0.9 0.1', '0.8 0.2', '0.3 0.7', '0.1 0.9']]

for node in names:
  dictionaries_list[node] = factors.copy()

for dicts in dictionaries_list.copy():
  for prob in potential:  
    dictionaries_list.get(dicts)["val"] = prob

print(dictionaries_list)

预期结果是:

{'A': {'var': [], 'card': [], 'val':['0.5 0.5']}, 
'C': {'var': [], 'card': [], 'val': ['0.2 0.8']}, 
'B': {'var': [], 'card':[], 'val': ['0.9 0.1', '0.8 0.2', '0.3 0.7', '0.1 0.9']}}

我得到:

{'A': {'var': [], 'card': [], 'val': ['0.9 0.1', '0.8 0.2', '0.3 0.7', '0.1 0.9']}, 
'C': {'var': [], 'card': [], 'val': ['0.9 0.1', '0.8 0.2', '0.3 0.7', '0.1 0.9']}, 
'B': {'var': [], 'card':[], 'val': ['0.9 0.1', '0.8 0.2', '0.3 0.7', '0.1 0.9']}}

1 个答案:

答案 0 :(得分:0)

您需要并行迭代它们。您可以在python中使用zip。请尝试:

dictionaries_list = {}
factors = {"var": [],
            "card": [],
            "val": []}


potential = [['0.5 0.5'], ['0.2 0.8'], ['0.9 0.1', '0.8 0.2', '0.3 0.7', '0.1 0.9']]

for node in names:
  dictionaries_list[node] = factors.copy()

for dicts, prob in zip(dictionaries_list.copy(), potential):
    dictionaries_list.get(dicts)["val"] = prob

print(dictionaries_list)