【发布时间】:2016-12-19 20:57:16
【问题描述】:
我对 Python 比较陌生,很难想出一种方法来完成以下工作。目前,我有一个元组列表(大于list_one。这些元组中的元素是 1)一个元组和 2)一个字符串(这些字符串始终是两个值之一:在示例中为 'A' 或 @987654323 @(也可以是'D' 或'Z',或任何其他两个字符串)。内部元组包括一个'id' 和一个list 的值(字符串):
list_one = [(('id1', ['v1', 'v2']), 'A'), (('id2', ['v3', 'v4', 'v5', 'v6']), 'A'), (('id3', ['v11']), 'B'), (('id4', ['v12', 'v13']), 'B'), (('id5', ['v14', 'v16']), 'B'), (('id6', ['v17', 'v18', 'v21']), 'A')]
我正在尝试创建一个如下所示的新列表,但未成功:
new_list1 = [('id1',['v1', 'v2', 'v3', 'v4', 'v5', 'v6']), ('id3',['v11', 'v12', 'v13', 'v14', 'v16']), ('id6',['v17', 'v18', 'v21'])]
当字符串值 (A, B) 发生变化时,它应该创建一个新元组,第一个元素是 A,B 变化的初始元组的 id,第二个元素是值列表(“v's ") 在初始列表中。一个列表,如果字典也可以,例如:
new_list2 = [{'id1': ['v1','v2', 'v3', 'v4', 'v5', 'v6']}, {'id3':['v11', 'v12', 'v13', 'v14', 'v16']}, {'id6':['v17', 'v18', 'v21']}]
感谢任何指导。
编辑:
s = list_one[0][1]
for tup in list_one:
if s in tup:
new_list.extend(tup[0][1])
else:
new_list.append(tup[0][1])
给予:
['v1', 'v2', 'v3', 'v4', 'v5', 'v6', ['v11'], ['v12', 'v13'], ['v14', 'v16'], 'v17', 'v18', 'v21']
这并不是我真正想要的,因为这会创建一个围绕“A”值的列表,其中包含“B”列表。
【问题讨论】:
-
向我们展示您的代码...
-
欢迎来到 Stackoverflow!准确说明:a) 到目前为止您尝试过什么(显示 Minimal Complete Verifiable Example)b) 您在哪里卡住了(再次显示代码)。
-
啊,刚刚看到你的cmets。感谢 SuperSaiyan ;) 老实说,我完全不确定如何处理这个特殊问题。我已经尝试了很多东西,例如主帖中的编辑。似乎不是一个非常困难的问题,但不知何故无法想出一个很好的方法来解决 1)在同一个列表中获取具有相同 'id' 的相邻“v”,然后创建一个新列表使用第二个“id”的“v”。