gpt4 book ai didi

python - 根据另一个列表中的公共(public)值从一个列表中获取值列表的字典

转载 作者:行者123 更新时间:2023-12-02 16:15:18 25 4
gpt4 key购买 nike

我有两个列表。一个给我 ID,说:

list1 = [0, 0, 0, 0, 1, 1, 2, 3, 3, 3]

另一个给我与这些 ID 关联的值,比如:

list2 = [10, 20, 30, 40, 1, 5, 9, 10, 15, 20]

我想根据 list1 中的值组织 list2 的值,这样:

dict = {0:[10,20,30,40], 1:[1, 5], 2:[9], 3:[10,15,20]}

我目前的问题是我需要一种有效的方法来执行此操作,因为我的列表长约 150000 点,而且我的解决方案非常慢:

dict = {i:list2[np.where(np.array(obid)==i)] for i in np.unique(list1)}

这似乎是一个简单的问题,也许有一个明显的答案,但我似乎无法找到正确的单词组合来获得好的答案。

最佳答案

如果 list1 已排序(或者如果您预先排序),您可以使用 groupby 即时将它们收集到子组中,然后创建一个字典,其中的键是来自list1,值来自list2

>>> from itertools import groupby
>>> {k:[i[1] for i in g] for k,g in groupby(zip(list1, list2), key=lambda i: i[0])}
{0: [10, 20, 30, 40], 1: [1, 5], 2: [9], 3: [10, 15, 20]}

关于python - 根据另一个列表中的公共(public)值从一个列表中获取值列表的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66910502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com