我必须比较两个dictonaries(未分类)。因此我会迭代一个dictonary而If键在dictA和dictB中,然后用值做一些事情。 (例如dictA [key] / dict [B])
dicts看起来像: 总= {1951:2,1952:2} 年= {1922:33,1951:1}
除了比率为{1951:0.5}之外,我会这样做,但它是空的。
我尝试了各种方法。最后一个:
for i in total:
if i in years:
ratio[i] = years[i] / total[i]
我也尝试过使用
year.viewkeys() | total.viewkeys()
但它会把钥匙还给我,我需要处理这些值。 (或者至少我不知道怎么样)
答案 0 :(得分:0)
您可以使用set intersection
查找两个词典中的哪些键>>> total = {1951: 2, 1952: 2}
>>> years = {1922: 33, 1951: 1}
>>> common = set(total.viewkeys()).intersection(years.viewkeys())
>>> common
{1951}
然后使用dict理解来计算比率
>>> ratio = {i: float(years[i])/float(total[i]) for i in common}
>>> ratio
{1951: 0.5}
答案 1 :(得分:0)
我猜是“而不是空”,你的意思是ratio
是{1951: 0}
。如果您使用的是Python 2.7,那么它使用整数除法:1/2被截断为零。一种可能的解决方案是在分割之前转换为浮动。
total = {1951: 2, 1952: 2}
years = {1922: 33, 1951: 1}
ratio = {}
for i in total:
if i in years:
ratio[i] = years[i] / float(total[i])
print ratio
结果:
{1951: 0.5}
答案 2 :(得分:0)
year.viewkeys() | total.viewkeys()
是一种非常有效的方法。尝试
commonkeys = year.viewkeys() & total.viewkeys()
代替:
for key in commonkeys:
ratio[key] = float(year[key]) / total[key]
请注意float
是必要的,因为在python2中,整数上的/
会导致2/3==0
。