【发布时间】:2021-10-29 18:34:01
【问题描述】:
我有这个嵌套列表,我需要以某种方式遍历它以合并具有公共元素的内部列表(其中这些元素本身就是列表)。这是一个具有现有原始数据模式的简化数据:
data = [
[[0,1],[2,3],[4,5]],
[[2,3],[4,5]],
[[4,5]],
[[6,7],[8,9],[10,11]],
[[8,9],[10,11]],
[[10,11]],
[[12,13],[14,15],[16,17],[18,19],[20,21]],
[[14,15],[16,17],[18,19],[20,21]],
[[16,17],[18,19],[20,21]],
[[18,19],[20,21]],
[[20,21]]
]
我想获得一个合并的嵌套列表,如下所示:
merged = [
[[0,1],[2,3],[4,5]],
[[6,7],[8,9],[10,11]],
[[12,13],[14,15],[16,17],[18,19],[20,21]]
]
以下是我尝试过的,不幸的是它不会超出第二个内部for loop,而是返回错误AttributeError: 'int' object has no attribute 'values':
tmp = {}
for subl in original:
subl = list(set(subl)) # Eliminating duplicates by first converting to a set
subl = dict(zip(subl, range(len(subl)))) # Create dictionary from list
sublswitch = {y:x for x,y in subl.items()} # Swap dictionary key for values and vice versa
ii = 0
for key in sublswitch:
tmp.setdefault(key.values(), set()).add(list(key.values())[ii])
ii += 1
out = []
for k, v in tmp.items():
out.append([[k, i] for i in v])
【问题讨论】:
标签: python list dictionary arraylist set