【发布时间】:2012-10-31 11:27:43
【问题描述】:
我想制作一个每个值有多个键的二维字典。我不想使元组成为键。而是创建许多返回相同值的键。
我知道如何使用 defaultdict 制作二维字典:
from collections import defaultdict
a_dict = defaultdict(dict)
a_dict['canned_food']['spam'] = 'delicious'
我可以使用一个元组作为键
a_dict['food','canned_food']['spam'] = 'delicious'
但这不允许我做类似的事情
print a_dict['canned_food']['spam']
因为 'canned_food' 不是键,所以元组 ['food','canned_food'] 是键。
我了解到我可以简单地将许多独立设置为相同的值,例如:
a_dict['food']['spam'] = 'delicious'
a_dict['canned_food']['spam'] = 'delicious'
但这会因为大量的键而变得混乱。在字典的第一维中,每个值我需要约 25 个键。有没有办法编写字典,以便元组中的任何键都可以工作?
I have asked this question before 但不清楚我想要什么,所以我重新发布。提前感谢您的帮助。
【问题讨论】:
-
从技术上讲,您将元组设为键,而不是列表。
-
有点不清楚您希望它如何运作。一个值可以在多个键中吗?
-
是的,一个值会有多个键。
-
对不起,我不清楚我的意思,我的意思是如果你有键的元组(它们都指同一个项目),这些元组可能有相同的“子键”吗?例如:
('food', 'canned_food')和('canned_food', 'canned_beans')都是键。如果是这样,他们应该如何表现? -
我想我明白你在说什么。字典第一维中的键总是不同于字典第二维中的键。它是层次结构。如果它是一个类别并且也在某个子类别中,我想为它分配一个值。我的问题是我有很多类别都具有相同的子类别。
标签: python dictionary python-2.x