看看这个 - 它正是你所要求的实现:multi_key_dict(ionary)
https://pypi.python.org/pypi/multi_key_dict
(来源https://github.com/formiaczek/python_data_structures/tree/master/multi_key_dict)
(在 Unix 平台上,它可能作为一个包提供,您可以尝试使用以下方式安装它:
sudo apt-get install python-multi-key-dict
对于 Debian,或您的发行版的等价物)
您可以使用不同类型的键,但也可以使用相同类型的键。您还可以使用您选择的键类型迭代项目,例如:
m = multi_key_dict()
m['aa', 12] = 12
m['bb', 1] = 'cc and 1'
m['cc', 13] = 'something else'
print m['aa'] # will print '12'
print m[12] # will also print '12'
# but also:
for key, value in m.iteritems(int):
print key, ':', value
# will print:1
# 1 : cc and 1
# 12 : 12
# 13 : something else
# and iterating by string keys:
for key, value in m.iteritems(str):
print key, ':', value
# will print:
# aa : 12
# cc : something else
# bb : cc and 1
m[12] = 20 # now update the value
print m[12] # will print '20' (updated value)
print m['aa'] # will also print '20' (it maps to the same element)
键的数量没有限制,所以代码如下:
m['a', 3, 5, 'bb', 33] = 'something'
是有效的,任何一个键都可以用来引用这样创建的值(读/写或删除它)。
编辑:从 2.0 版开始,它也应该适用于 python3。