所以我在这上面看过几个帖子但是他们没有按照我的需要排队,因为我的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
}
}
答案 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])