用于通过该子List的第一个元素的索引访问子List的Python代码

时间:2013-11-05 02:11:12

标签: python

我有以下格式的两个列表:

list1 = [[[a, b], 0.2], [[a, c], 0.5], [[a, d], 0.3], [[b, d], 0.1]]
# list1 is sorted by first element of its sublist

list2 = [[a, b], [a, d], [b, d]]
# list2 is sorted

我想要与 list2

中每个元素对应的 list1 '子列表的所有'第二个元素的SUM

因此总和 0.2 + 0.3 + 0.1 = 0.6

注意:子集中的元素始终存在于 list1

我的解决方案:

list11=[]
list12=[] 
for i in list1:
    list11.append(i[0])
    list12.append(i[1])

sum=0

for i in list2:
    sum+=list12[list11.index(i)]

我希望有一个解决方案不涉及创建临时列表。

1 个答案:

答案 0 :(得分:3)

您可以使用list comprehension来实现此目的:

x = [['a', 'b'], ['a', 'd'], ['b', 'd']]
y = [[['a', 'b'], 0.2], [['a', c], 0.5], [['a', 'd'], 0.3], [['b', 'd'], 0.1]]
total = sum([b for a, b in y if a in x])

演示

>>> x = [['a','b'], ['a', 'd'], ['b', 'd']]
>>> y = [[['a', 'b'], 0.2], [['a', 'c'], 0.5], [['a', 'd'], 0.3], [['b', 'd'], 0.1]]
>>> [b for a, b in y if a in x]
[0.2, 0.3, 0.1]
>>> sum([b for a, b in y if a in x])
0.6