Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何获取地图';s键位于哪个对象中?_Python_Dictionary - Fatal编程技术网

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
类:可能重复的