这是我的名单
some_list = [('A','B','IP1','N1'),('A','B','IP3','N3'),('B','C','IP2','N2'),('B','C','IP3','N3'),('D','F','IP4','N4')]
假设'A','B'
在('A','B','IP1','N1'),('A','B','IP3','N3')
然后我们需要将这两个元组组合在一起,并将('A','B','IP1','N1'),('A','B','IP3','N3')
替换为some_list
中的('A','B','IP1','N1','IP3','N3')
结果:
some_list = [('A','B','IP1','N1','IP3','N3'), ('B','C','IP2','N2','IP3','N3'), ]
应该来,但要确保不是“A”、“B”、“C”,。。不管怎样,每次都不一样
你能帮我吗?你知道吗
基本上你需要为你的2个值创建一个元组键,并用它创建一个默认字典。你知道吗
为每个键扩展列表的其余部分,并通过向值中添加键(as list)将键/值耦合转换回列表列表
像这样:
结果:
for k1,k2,*b in some_list
部分允许将前两个值放在单独的k1
和k2
变量中,并将“rest”放在b
列表中。此功能在Python2中不可用。Python 2用户可以用更基本的(这个问题类似于:Merge tuples with the same key对于核心部分,但是前后处理使它不同)
您还可以使用^{} 将元组按前两项分组,然后将元组的其余部分合并到末尾并展开:
它给出了以下结果:
上面使用^{} 来展平分组的元组。您还需要按前两项对元组列表进行排序,以便使用
itertools.groupby()
对它们进行分组。这是因为它在iterable中按连续键分组,这只能通过排序来实现。你知道吗此外,如果元组列表的长度始终为4,并且键始终是前两项,则还可以使用^{} 表示
key
和rest
:它查找前两个值(0,1)和后两个值(2,3)。你知道吗
你也可以尝试下面的代码。你知道吗
如果您想尝试第三方软件包,请使用
pip install ordered-set
安装ordered-set
。你知道吗您可以检查https://pypi.org/project/ordered-set/。你知道吗
相关问题 更多 >
编程相关推荐