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})

如果您需要嵌套字典-仍然可以对该结果进行后处理…