嵌套字典不按要求更新

kun*_*bey 2 python dictionary list python-3.x

我正在尝试创建一个嵌套字典,该字典具有子字典键作为列表的其余元素。以更简单的方式进行解释:

要求的输出:

payable = { 'A':{'B':0,'C':0},'B':{'A':0,'C':0}....}

输出:

payable = { 'A':{'B':0,'C':0,'A':0},'B':{'A':0,'C':0,'B':0}....}

我不需要 'A' 键下的子 'A' 键。我怎样才能解决这个问题?

names = ['A', 'B', 'C']  
payable = dict.fromkeys(names, {})  
for mainKey in payable.keys():
    for subKey in names:
        if(mainKey != subKey):
            payable[mainKey][subKey] = 0 
print(payable) 
Run Code Online (Sandbox Code Playgroud)

Chr*_*ris 5

当您创建using时dict.fromkeys,所有键都处于相同的状态dict

尝试payable使用dict理解来创建(换句话说,dict每个键都是新的),它可以正常工作:

names = ['A','B','C']  
payable= {k:{} for k in names}
for mainKey in payable.keys():
    for subKey in names:
        if(mainKey!=subKey):
            payable[mainKey][subKey]=0 
print(payable) 
Run Code Online (Sandbox Code Playgroud)

输出:

{'A': {'B': 0, 'C': 0}, 'B': {'A': 0, 'C': 0}, 'C': {'A': 0, 'B': 0}}
Run Code Online (Sandbox Code Playgroud)