我想知道我试图用python实现的功能是否可行。
我有一个叫做生物的全球杂凑。这些生物包含称为哺乳动物、两栖动物、鸟类、昆虫的亚群。
哺乳动物有称为鲸鱼、大象的亚群。两栖动物有被称为青蛙、幼虫的亚群。鸟类有称为鹰、长尾鹦鹉的亚群。昆虫有称为蜻蜓,蚊子的子散列。
同样,老鹰也有称为雄性,雌性的子散列。
我正在从一个文本文件中计算所有这些生物的频率。例如,如果文件采用以下格式:
Birds Eagle Female
Mammals whales Male
Birds Eagle Female
I should output Creatures[Birds[Eagle[Female]]] = 2
Creatures[mammals[Whales[Male]]] = 1
在Python中有可能吗?怎么能做到?我对Python很陌生,非常感谢您的帮助。我对只有一级的词典很满意,即键->;值。但在这里,有多个键和多个值。我不知道该怎么做。我正在使用Python2.6。感谢advace!
如果你只需要“计数”一些东西——假设数据文件包含所有必需的“哈希”级别——这就可以做到:
生成结果:
defaultdict(<type 'int'>, {'Mammals-whales-Male': 1, 'Birds-Eagle-Female': 2})
如果您需要嵌套字典--仍然可以对该结果进行后处理。。。
不优雅,但工作:
这可能可以用更简洁的方式编写,但至少它可以工作并允许任意嵌套级别,除非您对同一“实体”有不同的嵌套级别(例如,
Birds Eagle Female
和Birds Eagle
将不工作)分配给字典中键的值本身可以是另一个字典
不过,您需要显式地创建每个字典。与Perl不同,Python在试图将未分配密钥的值视为字典时不会自动创建字典。
当然,除非您使用
defaultdict
:对于任意级别的嵌套,可以使用此递归定义
在这种情况下,您确实需要显式初始化整数值,因为否则
creatures['birds']['eagle']['female']
的值将被假定为另一个defaultdict
:相关问题 更多 >
编程相关推荐