【发布时间】:2016-09-06 16:08:29
【问题描述】:
我有一个像这样的字典:
dict = {
"a": {"Azerbaijan": 20006.0, "Germany": 20016.571428571428},
"b": {"Chad": 13000.0, "South Africa": 3000000.0},
"c": {"Chad": 200061.0, "South Africa": 3000000.0}
}
我正在尝试获取每个独特国家和价值出现次数的字典。
例如,{"Chad": 2, "South Africa": 2,..},{"3000000": 2, "13000": 1,..}
我正在使用下面的代码,它可以工作但不是很聪明,有没有更好的方法可以在没有长迭代周期的情况下做到这一点,因为实际的 dict 很大?
seencountries = {}
seenvalues = {}
for key, innerdict in dict.iteritems():
for country, value in innerdict.iteritems():
if value not in seenvalues.keys():
seenvalues[value] = 0
seenvalues[value]+=1
if country not in seencountries.keys():
seencountries[country] = 0
seencountries[country]+=1
print seencountries
print seenvalues
【问题讨论】:
-
您的国家是主要国家?由于 Python 字典没有排序 - 你怎么知道从每个国家的字典中取哪个键?
-
如果还没有看到。如果我理解正确,字典只包含唯一值?
-
它们包含唯一的键 - 这是正确的。但是 - 键的顺序是任意的...或者您是否计算所有键而不仅仅是国家...?我相当确定键 a 这些键都不是国家...
-
编辑问题以使其更清晰。
-
“Pennsylvania Avenue NW”是如何成为一个国家的,“3000000”是如何凭空变成结果的(输入中没有)?
标签: python dictionary iterator set