gpt4 book ai didi

python - 比较平面列表和嵌套列表

转载 作者:太空宇宙 更新时间:2023-11-04 09:01:50 25 4
gpt4 key购买 nike

我想比较下面的两个列表。 edges 是一个元组列表,而 b_edge 是一个嵌套的元组列表。我想要的是将 edges[i][2] 附加到所有 b_edge[i][j] if b_edge[i][j] == edge[0:2].

列表如下:

edges = [('1.0', '2.0',{'length':0.35}),('2.0', '3.0',{'length':0.46,}),('3.0', '4.0', {'length':0.49}),(4.0, 5.0,{'length':0.22}),('5.0', '6.0',{'length':0.54}),('6.0', '7.0', {'length':0.49}),('7.0', '8.0',{'length':0.22}),(5.0, 6.0,{'length':0.54})]

b_edge = [[('1.0', '2.0'), ('2.0', '3.0'), ('3.0', '4.0')], [('5.0', '6.0'), ('6.0', '7.0'), ('7.0', '8.0')]]

期望的输出:

[[('1.0', '2.0', {'length': 0.35}), ('2.0', '3.0', {'length': 0.46}), ('3.0', '4.0', {'length': 0.49})], [('5.0', '6.0', {'length': 0.35}), ('6.0', '7.0', {'length': 0.46}), ('7.0', '8.0', {'length': 0.49})]

我试过这个:

result = []
for j in b_edge:
temp = []
for l,k in enumerate(j):
if j[l][0:2] == edges[l][:2]:
temp.append(k + (edges[l][2],))
result.append(temp)
print 'result', result

并且还在 SO compare two lists and print out unequal elements 上检查了这些答案和类似的问题,但它们与我想要的不太匹配。

得到了这个结果:

[[('1.0', '2.0', {'length': 0.35}), ('2.0', '3.0', {'length': 0.46}), ('3.0', '4.0', {'length': 0.49})], []]

它似乎只将字典附加到嵌套列表中的第一个元素,第二个它只输出一个空列表。

谢谢。

最佳答案

试试这个:

result = b_edge
tmp_dict = { (i[0],i[1]): i[2] for i in edges }
for index_j, j in enumerate(b_edge):
for index_i, i in enumerate(j):
if i in tmp_dict:
result[index_j][index_i] = result[index_j][index_i] + (tmp_dict[i],)

我创建了一个字典来将您的元组映射到您的 {"length"} 字典,并使用它来生成您想要的输出。

关于python - 比较平面列表和嵌套列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24615954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com