python - 获取字典映射值到引用 ID

标签 python numpy dictionary

我有一个 numpy 数组列表,如下所示:

list_list = [np.array([53, 5, 2, 5, 5, 2, 1, 5, 9]), np.array([6, 4, 1,2, 53, 23, 1, 4])]

以及上面每个数组的 ID 列表:

ID = [6, 2]

如何获取一个字典,对于 list_list 中的每个唯一值,我都能获取包含该值的 ID 列表?

例如,对于这个非常简单的示例,我想要类似的内容:

{53: [6, 2]、5: [6]、2: [6, 2]、1: [6, 2] 等}

我的实际 list_list 长度超过 1000 个列表,每个 numpy 数组包含大约 1000 万个值,因此解决方案的效率是关键。

我知道 dict(zip(ID, list_list)) 会给我一个对应于 ID 及其所有值的字典,但它不会给我对应于 ID 的值,这这就是我想要的。

谢谢!

最佳答案

解决此类问题的最佳方法是将其分解为更小的步骤。如果合适的话,用英语和伪 python 的组合来描述这些内容。您似乎有正确的想法来开始使用 zip(ID, list_list)。正如我们在评论中讨论的那样,这将创建两个列表之间的关联。

那么接下来怎么办?好吧,我们想要构建一个字典,以 list_list 中的值作为键。为此,我们需要迭代 zip() 返回的列表:

for id, list in zip(ID, list_list):
    pass

然后我们需要迭代list的元素来确定字典的键:

for id, list in zip(ID, list_list):
    for x in list:
        pass

现在我们需要一个空字典来添加内容:

d = {}
for id, list in zip(ID, list_list):
    for x in list:
        pass

接下来,我们需要获取字典的列表(如果存在)。如果它不存在,我们可以使用一个空列表来代替。然后将id追加到列表中并将其放入字典中:

d = {}
for id, list in zip(ID, list_list):
    for x in list:
        l = d.get(x, [])
        l.append(id)
        d[x] = l

请注意我如何用文字描述每一步要做什么,然后将其翻译成 Python。像这样将问题分解为小步骤是培养程序员技能的关键部分。

关于python - 获取字典映射值到引用 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51446912/

相关文章:

jquery - 带有弹出窗口的 HTML 图像映射。使用 jquery 动画并回退到 css

python - 遍历 DictReader

python - 我在尝试查找词频时收到 TypeError : unhashable type: 'list' ,

python - 优化使用python 3生成大量随机数

python - 我需要 FFT wav 文件吗?

python - 创建具有不同起始值的升序 numpy 数组

python - 数据框根据该类别中的字符串值列表将列更新为类别名称

list - 如何更新列表的一个元素

python - 如何在 Python 中捕获的视频上插入图像

python - Pandas 将项目添加到一系列列表数据类型