在 python 中的列表之间映射的最快方法是什么

What is the quickest way to map between lists in python

我有一对 4 列表 a 和 b,它们具有整数值,例如 list_1a = [1,2,3,...]list_1b = [8,11,15,...]。这个想法是 list_1a 中的整数值现在由 list_1b 中的整数值表示,list_2alist_2b

中的整数值也是如此。

现在我有一个包含 4 列的列表 final_list,其中包含对应于 a 列表的整数值。我想将 final_list 中的值映射到 b 列表中的值。在 python 中执行此操作的最快方法是什么?

有没有比使用列表更快的方法?

编辑:

为了澄清问题,举个例子:

list_1a = [1,2,3]
list_1b = [8,11,15] 

list_2a = [5,6,7,8]
list_2b = [22,26,30,34]

list_3a = [11,12,13,14,18]
list_3b = [18,12,25,28,30]

list_4a = [51,61,72,82]
list_4b = [73,76,72,94]

final_list 在映射发生后应该看起来像 final_list_b

final_list_a = [[1,6,11,51],[3,6,14,72]]
final_list_b = [[8,26,18,73],[15,26,28,72]]

客观地说,这个问题是针对数据库应用程序的,其中 "lists" 包含自动生成的键值

我想你想要的是 dictionary,它将键与值相关联。除非我对你想在这里做什么感到困惑。

所以如果我列出 4 个简短的示例列表。

list_1a = [1,2,3,4]
list_1b = [8,11,15,18]
list_2a = [5,6,7,8]
list_2b = [22,26,30,34]

并将它们放入所有 "a" 值和所有 "b" 值的大列表中。

a_list = list_1a + list_2a
b_list = list_1b + list_2b

然后我可以使用 zip 将列表合并到字典中

my_dict = dict(zip(a_list, b_list))

print(my_dict)

见: how to merge 2 list as a key value pair in python

关于其他一些方法来做到这一点。

结果:

{1: 8, 2: 11, 3: 15, 4: 18, 5: 22, 6: 26, 7: 30, 8: 34}

现在您的 "a" 列表构成了这本词典的键。而 "b" 列表构成了值。您可以使用键访问这些值。这里有一些例子。

print(my_dict.keys())
print(my_dict.values())
print(my_dict[5])

给我:

[1, 2, 3, 4, 5, 6, 7, 8]
[8, 11, 15, 18, 22, 26, 30, 34]
22

这是你想要的吗?

编辑:我觉得我应该注意,虽然我的字典是按顺序打印的,但实际上字典并不像列表那样排序。如果这对您很重要,您可能需要查看 collections.OrderedDict or sorted

更新:

对于你想做的事情,也许可以考虑嵌套字典。您可以制作一个值为字典的字典,还要注意,当 1a 和 1b 的长度不匹配时,zip 不关心,只是排除 60:

list_1a = [1,2,3,4]
list_1b = [8,11,15,18,60]
list_2a = [5,6,7,8]
list_2b = [22,26,30,34]

a_dict = dict(zip(list_1a, list_2a))
b_dict = dict(zip(list_1b, list_2b))

my_dict = {"a" : a_dict, "b" : b_dict}

print(my_dict)

结果:

{'a': {1: 5, 2: 6, 3: 7, 4: 8}, 'b': {8: 22, 18: 34, 11: 26, 15: 30}}

现在您可以通过不同的方式访问内部值:

print(my_dict["a"].keys())
print(my_dict["a"].values())
print(my_dict["a"][4])

结果:

[1, 2, 3, 4]
[5, 6, 7, 8]
8