如何从数组生成一个字典嵌套的字典?

3

我有一个字符串数组,类似于这样:

Array = ['ABC', 'DEF', 'GHI']

如何将此映射到以下形状的字典的字典中?

dictionary = {
'ABC': {'DEF': auxFunction(ABC,DEF), 'GHI': auxFunction(ABC,GHI)},
'DEF': {'ABC': auxFunction(DEF,ABC), 'GHI': auxFunction(DEF,GHI)},
'GHI': {'ABC': auxFunction(GHI,ABC), 'DEF': auxFunction(GHI,DEF)},
}

2
计算值的来源是什么?这必须要知道才能回答你的问题。 - martineau
1
更新了数值。 - João Ramires
3个回答

4
你可以使用两个字典推导式来完成这个操作。
dictionary = {name: {x: auxFunction(name, x) for x in array if x != name} for name in array}

{'ABC': {'DEF': auxFunction(ABC, DEF), 'GHI': auxFunction(ABC, GHI)},
 'DEF': {'ABC': auxFunction(DEF, ABC), 'GHI': auxFunction(DEF, GHI)},
 'GHI': {'ABC': auxFunction(GHI, ABC), 'DEF': auxFunction(GHI, DEF)}}

3
您可以尝试这个:
finalDict= {}
Array = ['ABC', 'DEF', 'GHI']
for i in Array:
    tempDict = {}
    for j in Array:
        if i!= j:
            tempDict[j] = "A calculation between " + i + " - " + j
    finalDict[i] = tempDict
print(finalDict)

输出:

{
'ABC': {'DEF': 'A calculation between ABC - DEF', 'GHI': 'A calculation between ABC - GHI'},
'DEF': {'ABC': 'A calculation between DEF - ABC', 'GHI': 'A calculation between DEF - GHI'},
'GHI': {'ABC': 'A calculation between GHI - ABC', 'DEF': 'A calculation between GHI - DEF'}
}


1
>>> auxFunction = max
>>> {Array[i]: {Array[j]: auxFunction(Array[i], Array[j]) for j in range(len(Array)) if j != i} for i in range(len(Array))}
{456: {123: 456, 789: 789}, 123: {456: 456, 789: 789}, 789: {456: 789, 123: 789}}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接