有没有办法,如果有的话,有人可以告诉我如何在conf
中获得与下面的代码相同的结果,而不必像结构那样长的阶梯来迭代两个键和值两本词典?
conf = 0
def dist(instr):
return {x:instr.count(x)/float(len(instr)) for x in instr}
for k,v in dist("aass").items():
for x,y in dist("as").items():
if k == x:
conf += .5
if v == y:
conf +=1
print(conf)
答案 0 :(得分:4)
如果你需要的只是匹配的键,只需在另一个词典中查找键:
d1 = dist('as')
for k, v in dist('aass').items():
if k in d1:
conf += 1.5 if d1[k] == v else .5
您还可以创建字典键的集合交集;在Python 2中,您将使用dict.viewkeys()
method,在Python 3中使用dict.keys()
method;他们产生一个dictionany view,就像一个集合:
d1, d2 = dist('as'), dist('aass')
for k in d1.viewkeys() & d2.viewkeys(): # use d1.keys() & d2.keys() in Py3
conf += 1.5 if d1[k] == d2[k] else .5