我需要帮助从Python中嵌入字典中提取最大值

时间:2018-03-21 04:29:15

标签: python dictionary nested nlp max

所以我在这上面看过几个帖子但是他们没有按照我的需要排队,因为我的dict是名字,其他帖子的密钥都有相同的字符串标签(key)和我'我不知道如何解决这个问题。我有一个dicts的默认值,其值是它们的相似性向量。如此有效地做它的第一把钥匙是所有其他钥匙所比较的人,价值是它们的相似程度。我想找到最相似的。

finalDict = defaultdict(dict)

for s in meanDict.keys():
    spk1 = s
    vecSpk1 = meanDict[spk1]
    for t in meanDict.keys():
        if t != spk1:
            spk2 = t
            vecSpk2 = meanDict[spk2]
            sim = Similarity(vecSpk1,vecSpk2)
            finalDict[spk1][spk2] = sim

这是我到目前为止所尝试的但我收到错误代码: TypeError:不可用类型:' dict'

for s in finalDict.keys():
    speaker = finalDict[s]
    max([float(d[speaker]) for d in finalDict.values()]) 

一个示例条目如下所示:

defaultdict(<type 'dict'>, {
    'Rand Paul': {
        'Rick Santorum': 0.9915748250754691, 
        'Joseph Biden': 0.9941726131674848, 
        'Lindsey Graham': 0.9976981759787777, 
        'Mike Pence': 0.9898898183716316, 
        'Hillary Clinton': 0.9909482785262219, 
        'John Kasich': 0.9891372990166918, 
        'Barack Obama': 0.9914114570907536, 
        'Marco Rubio': 0.9806612828270346, 
        'Jim Webb': 0.9863228519191483, 
        'Bernie Sanders': 0.9940352419978636, 
        'Ted Cruz': 0.993712852439669, 
        'Lincoln Chafee': 0.9763407586067823
    }
}

1 个答案:

答案 0 :(得分:0)

要修复您的程序,您可以将最后一行更改为:

max([d for d in speaker.values()])

但是,有一些方法可以进一步改进您的代码。例如,考虑使用items() dicts方法和key函数的max属性:

for s, speakers in finalDict.items():
    max(speakers.items(), key=lambda x: x[1])