相关疑难解决方法(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中1:1映射的数据结构?

我有一个问题,需要一个可逆的1:1键到值的映射.

这意味着有时我想找到一个给定键的值,但有时我想找到给定值的键.键和值都保证唯一.

x = D[y]
y == D.inverse[x]
Run Code Online (Sandbox Code Playgroud)

显而易见的解决方案是每次我想要反向查找时简单地反转字典:反转字典非常容易,这里有一个配方但是对于大字典它可能非常慢.

另一种方法是创建一个新的类,它将两个字典统一起来,每个字典对应一种查找.这很可能很快,但会消耗两倍于单个字典的内存.

那么我可以使用更好的结构吗?

  • 我的应用程序要求这应该非常快,并尽可能少地使用内存.
  • 结构必须是可变的,并且强烈希望变异对象不应该导致它更慢(例如强制完整的重新索引)
  • 我们可以保证键或值(或两者)都是整数
  • 可能需要该结构来存储数千或数百万件物品.
  • Keys&Valus保证是唯一的,即len(set(x))== len(x)代表[D.keys(),D.valuies()]中的x

python data-structures

30
推荐指数
3
解决办法
9553
查看次数

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

我有一个对象字典:

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 ×3

data-structures ×1

dictionary ×1

mapping ×1

reverse ×1