从字典字典中查找平均值:不可散列的类型:'列表'

时间:2019-12-06 05:13:45

标签: python dictionary

我有一个字典,d

d = {'redFish': {'redFish': 'inf', 'blueFish': 9, 'twoFish': 10, 'oneFish': 6},
'blueFish': {'redFish': 9, 'blueFish': 'inf', 'twoFish': 11, 'oneFish': 10},
'twoFish': {'redFish': 10, 'blueFish': 11, 'twoFish': 'inf', 'oneFish': 8},
'oneFish': {'redFish': 6, 'blueFish': 10, 'twoFish': 8, 'oneFish': 'inf'}}

我有一个函数,该函数查找并返回具有最低值的键-键-值对:

lowestPair = ['name1', 'name2', float('inf')]
for name1 in d.keys():
    for name2 in d[name1].keys():
        if d[name1][name2] < lowestPair[2]:
            lowestPair = [name1, name2, d[name1][name2]]

我最低的一对作为一个群集,将被视为一个实体。 我现在正在尝试浏览字典,为每个物种找到值,这些值是我正在查看的物种与新集群中两个物种之间的平均值。

即由于redFish和oneFish是配对中最低的种类,我想找到redFish blueFish和oneFish Bluefish之间的平均值,以及oneFish twoFish和oneFish blueFish之间的平均值。

我已经为此进行了编码:

for name in lowestPair[0:2]:
    nameDict = {}
    for otherName in d[name].keys():
        if otherName not in lowestPair:
            average = (d[[lowestPair][0]][otherName] + [[lowestPair][1]][otherName])/2

我收到此错误:

    average = (d[[lowestPair][0]][otherName] + [[lowestPair][1]][otherName])/2
TypeError: unhashable type: 'list'

0 个答案:

没有答案