相关疑难解决方法(0)

Python反向/反转映射

给出这样的字典:

my_map = {'a': 1, 'b': 2}
Run Code Online (Sandbox Code Playgroud)

如何反转此地图以获得:

inv_map = {1: 'a', 2: 'b'}
Run Code Online (Sandbox Code Playgroud)

编者注: __CODE__改为__CODE__避免与内置函数冲突,__CODE__.下面有些评论可能会受到影响.

python mapping reverse dictionary

597
推荐指数
12
解决办法
36万
查看次数

Python中UserDict类的优点

使用UserDict类有什么好处?

我的意思是,如果不是,我真的得到了什么

class MyClass(object):
    def __init__(self):
        self.a = 0
        self.b = 0
...
m = MyClass()
m.a = 5
m.b = 7
Run Code Online (Sandbox Code Playgroud)

我会写以下内容:

class MyClass(UserDict):
    def __init__(self):
        UserDict.__init__(self)
        self["a"] = 0
        self["b"] = 0
...
m = MyClass()
m["a"] = 5
m["b"] = 7
Run Code Online (Sandbox Code Playgroud)

编辑:如果我理解正确,我可以在两种情况下都在运行时向对象添加新字段?

m.c = "Cool"
Run Code Online (Sandbox Code Playgroud)

m["c"] = "Cool"
Run Code Online (Sandbox Code Playgroud)

python oop

16
推荐指数
4
解决办法
2万
查看次数

python的可逆字典

我想以类似的形式将一些数据存储在Python中:{1:'a', 2:'b'}.每个值都是唯一的,不仅仅是其他值,还包括键.

是否有一个简单的数据结构,我可以使用它来获取相应的对象,无论我是否要求使用'key'或'value'?例如:

>>> a = {1:'a', 2:'b'}
>>> a[1]
'a'
>>> a['b']
2
>>> a[3]
KeyError
Run Code Online (Sandbox Code Playgroud)

'keys'是标准的python int,值是短(<256char)字符串.

我目前的解决方案是创建一个反向字典并搜索它,如果我在原始字典中找不到结果:

pointsreversed = dict((v, k) for k, v in points.iteritems())
def lookup(key):
    return points.get(key) or pointsreversed.key()
Run Code Online (Sandbox Code Playgroud)

这使用了两倍的空间,这不是很好(我的词典可以达到几百兆),平均减慢50%.

编辑:正如在几个答案中提到的,两个dicts不会使内存使用量增加一倍,因为它只是字典,而不是内部的项目,即重复.

有没有改进的解决方案?

python dictionary hashtable

9
推荐指数
2
解决办法
6014
查看次数

获取字典中值的键的最有效方法

我有一个对象字典:

dic = {'k1':obj1, 'k2':obj2, 'k3':obj3, ...}

class MyObject:
    def __init__(self,x,y):
        self.x=x
        self.y=y
Run Code Online (Sandbox Code Playgroud)

我想知道如何找到与值对应的键的最佳实现。相当于:

def find_key(dic, val):
    for k,v in dic.items():
        if v==val:
            return k
    return None
Run Code Online (Sandbox Code Playgroud)

注意:抱歉,如果这是显而易见的,我是 Python 新手:-)

python

2
推荐指数
1
解决办法
1194
查看次数

标签 统计

python ×4

dictionary ×2

hashtable ×1

mapping ×1

oop ×1

reverse ×1