迭代字典的键和值,没有类似结构的楼梯

时间:2016-07-03 20:52:05

标签: python

有没有办法,如果有的话,有人可以告诉我如何在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)

1 个答案:

答案 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