Ana*_*rKi 2 python map-function
我有成对的4个列表a和b与整数值,如list_1a = [1,2,3,...]和list_1b = [8,11,15,...].我们的想法是,整数值list_1a现在由整数值表示list_1b,并且相同list_2a,list_2b等等.
现在我有一个final_list包含4个列的列表,其中包含与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]
Run Code Online (Sandbox Code Playgroud)
list_1a + list_1b永远不会有重复的整数值.final_listfinal_list_b映射发生后应该看起来像
final_list_a = [[1,6,11,51],[3,6,14,72]]
final_list_b = [[8,26,18,73],[15,26,28,72]]
Run Code Online (Sandbox Code Playgroud)
为了正确看待问题,这个问题适用于数据库应用程序,其中这些"列表"包含自动生成的键值
我想你想要的是一个字典,它将键与值相关联.除非我对你想做什么感到困惑.
所以,如果我制作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]
Run Code Online (Sandbox Code Playgroud)
并将它们列入所有"a"值和所有"b"值的大列表中.
a_list = list_1a + list_2a
b_list = list_1b + list_2b
Run Code Online (Sandbox Code Playgroud)
然后我可以使用zip将列表合并到字典中
my_dict = dict(zip(a_list, b_list))
print(my_dict)
Run Code Online (Sandbox Code Playgroud)
对于其他一些方法来做这最后一点.
结果:
{1: 8, 2: 11, 3: 15, 4: 18, 5: 22, 6: 26, 7: 30, 8: 34}
Run Code Online (Sandbox Code Playgroud)
现在你的"a"列表组成了这个字典的键......而"b"列表组成了这些值.您可以使用键访问值.这是一些例子.
print(my_dict.keys())
print(my_dict.values())
print(my_dict[5])
Run Code Online (Sandbox Code Playgroud)
给我:
[1, 2, 3, 4, 5, 6, 7, 8]
[8, 11, 15, 18, 22, 26, 30, 34]
22
Run Code Online (Sandbox Code Playgroud)
这是你想要的吗?
编辑:我觉得我应该注意,虽然我的字典按顺序打印,但字典实际上并没有像列表那样排序.您可能希望查看collections.OrderedDict或排序,如果这对您很重要.
更新:
对于您想要做的事情,可以考虑使用嵌套字典.您可以创建一个值为字典的字典,还要注意当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)
Run Code Online (Sandbox Code Playgroud)
结果:
{'a': {1: 5, 2: 6, 3: 7, 4: 8}, 'b': {8: 22, 18: 34, 11: 26, 15: 30}}
Run Code Online (Sandbox Code Playgroud)
现在,您可以以不同的方式访问内部值:
print(my_dict["a"].keys())
print(my_dict["a"].values())
print(my_dict["a"][4])
Run Code Online (Sandbox Code Playgroud)
结果:
[1, 2, 3, 4]
[5, 6, 7, 8]
8
Run Code Online (Sandbox Code Playgroud)