Python中的多个级别的键和值
问题内容:
我想知道我尝试在python中实现的功能是否可行。
我有一个名为Creatures的全局哈希。生物包含称为哺乳动物,两栖动物,鸟类,昆虫的亚哈希。
哺乳动物有称为“鲸”的小杂物,大象。两栖动物有称为青蛙,幼虫的子哈希。鸟类有称为“长尾小鹦鹉”的小杂种。昆虫具有称为蜻蜓,蚊子的子哈希。
同样,老鹰有称为男性,女性的子哈希。
我正在从一个文本文件计算所有这些生物的频率。例如,如果文件采用以下格式:
Birds Eagle Female
Mammals whales Male
Birds Eagle Female
I should output Creatures[Birds[Eagle[Female]]] = 2
Creatures[mammals[Whales[Male]]] = 1
Python可能吗?怎么做到呢?我是Python的新手,非常感谢您的帮助。我只接受最多1级的字典,即key->
value。但是这里有多个键和多个值。我不确定如何进行此操作。我正在使用python 2.6。感谢您的放心!
问题答案:
如果您只需要“计数”事物(并且假设数据文件包含所有必需的“哈希”级别),那么就可以解决问题:
import collections
result = collections.defaultdict(int)
with open("beast","rt") as f:
for line in f:
hashes = line.split()
key = '-'.join(hashes)
result[key] += 1
print result
产生结果:
defaultdict(<type 'int'>, {'Mammals-whales-Male': 1, 'Birds-Eagle-Female': 2})
如果您需要嵌套字典-仍然可以对该结果进行后处理…