python - 从 Python 列表列表到整数索引的逆映射

标签 python list

我有一个 Python 列表,它表示找到特定产品的最佳商店,就像这样(我们只返回下面的列表):

Index: Product     0  1  2  3  4  5  6  7  8  9
Value: Store      [5, 6, 1, 7, 3, 4, 2, 0, 8, 9]

现在,每个产品都有一个唯一的商店,所以我可以将其转换为一个列表列表,为商店和每个商店中要购买的产品编制索引:

Index: Store               0    1    2    3    4    5    6    7    8    9
Value: List of Products  [[7], [2], [6], [4], [5], [0], [1], [3], [8], [9]]

使用这个函数:

def convertList(l):
    return [[i] for (i, j) in sorted(list(enumerate(l)), key=lambda e:e[1])]

但现在我不知道如何在一个商店中找到多种产品的情况下将它们组合起来(在这种情况下,产品 3 和 9 在商店 7 最好,并且什么都不应该在商店购买)商店 9) :

Index: Product     0  1  2  3  4  5  6  7  8  9
Value: Store      [5, 6, 1, 7, 3, 4, 2, 0, 8, 7]

输出应该是这样的:

Index: Store               0    1    2    3    4    5    6    7       8    9
Value: List of Products  [[7], [2], [6], [4], [5], [0], [1], [3, 9], [8], []]

我知道我卡在了 convertList 中的 sorted 函数上,但我不确定如何继续。我正在练习列表理解,所以如果可行的话,我想使用一个。有什么想法吗?

最佳答案

我认为在不使用列表理解的情况下这将更具可读性。列表推导适用于一对一映射步骤,但事实并非如此。

最好遍历您的输入并将每个项目添加到输出数组的正确元素:

# assuming your input is in product_to_store
store_to_product = [[] for i in range(10)]
for product, store in enumerate(product_to_store):
  store_to_product[store].append(product)

关于python - 从 Python 列表列表到整数索引的逆映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24833330/

相关文章:

python - 如何链接变量?龙

python - Postgres COPY FROM 命令无法通过 Python 工作

python - Wamp 服务器和 Python

html - 尝试在无序列表中 float div

java - 最终局部变量不能被赋值,因为它是在封闭类型 java 中定义的

python-3.x - 我想将国家列表与列数据进行比较,列数据是 pandas 数据框 Python 中的字典对象类型

python - 一段时间后做某事 : Pygame

python - 通过Python API自动登录Bloomberg

python - Tkinter - 自动滚动到底部

java - 这个 contains(T Entry) 方法有什么问题? java 。链表