Python 如何获取地图';s键位于哪个对象中?
是否有一种内置的方法来获取放置对象的字典键Python 如何获取地图';s键位于哪个对象中?,python,dictionary,Python,Dictionary,是否有一种内置的方法来获取放置对象的字典键 类示例(): def do_black_magic(self): 返回_;内置__;魔术__; __; _; _; __; map={0:Example()} 映射[0]。执行_black_magic()#->0 map[1]=map.pop(0) 马[1].做黑色魔术()#->1 您可以实现一个管理反向映射的字典,但是在反向映射中,您必须非常小心地使用什么作为键 为了示例,我非常天真地使用了对象的默认字符串表示形式。你肯定会想在你的示例类中使用其他东
类示例():
def do_black_magic(self):
返回_;内置__;魔术__; __; _; _; __;
map={0:Example()}
映射[0]。执行_black_magic()#->0
map[1]=map.pop(0)
马[1].做黑色魔术()#->1
您可以实现一个管理反向映射的字典,但是在反向映射中,您必须非常小心地使用什么作为键
为了示例,我非常天真地使用了对象的默认字符串表示形式。你肯定会想在你的示例
类中使用其他东西(例如实现\uuuuuueq\uuuuuu
和\uuuuuuuuu散列
)
输出
1
2
1
Traceback (most recent call last):
return self._reverse_mapping[str(value)]
KeyError: '2'
我怎么强调都不过分:不要使用对象的字符串表示形式。如果这种表述发生变化,它将惨败:
class Example:
def __init__(self, n):
self.n = n
def __str__(self):
return str(self.n)
my_dict = MyDict()
obj = Example(1)
my_dict[1] = obj
print(my_dict.get_reversed_mapping(obj))
obj.n = 2
print(my_dict.get_reversed_mapping(obj))
输出
1
2
1
Traceback (most recent call last):
return self._reverse_mapping[str(value)]
KeyError: '2'
否,遍历dict,或创建反向映射。值通常不一定是唯一的,字典是键到值的“单向映射”。用键构造Example()?map={x:Example(x)for x in range(10)}听起来像是某种双向哈希表。查看此
bidict
类:可能重复的