使用字典来减少元组列表

时间:2014-07-25 05:30:02

标签: python dictionary tuples

我正在尝试使用字典来减少元组列表。起点如下所示。我还包括一个字典 - 字典中的值是我想用来减少我的元组列表

start = [('bryan', 'lucy'), ('david', 'lucy')]

dic = {'bryan': 4.9, 'lucy': 7.5, 'david': 8.0}

我想要它,所以任何具有差异大于1的元素(根据字典中的值)被删除的元组。在这种情况下,所需的输出将是

[('david','lucy')]

b / c david的绝对值 - lucy = 0.5

这是我(失败)尝试解决我的问题。

end = []

for i in range(0,len(start)):
    if abs(dic[start[i][0]] - dic[start[i][1]]) < 1.0001:
        end.append(dic[start[i]])

任何帮助将不胜感激

3 个答案:

答案 0 :(得分:1)

列表理解可以帮助你。

[(e,o) for e, o in start if -1 < dic[e]-dic[o] < 1]

答案 1 :(得分:1)

列表理解可以使这成为一个单行

[ (l,r) for (l,r) in start if abs(dic[l]-dic[r])<1.0001 ]

答案 2 :(得分:0)

试试这个

In [13]: [x for x in start if abs(dic[x[0]] - dic[x[1]]) < 1.0001]
Out[13]: [('david', 'lucy')]

这是python中的list comprehension。它将检查列表中的所有属性,并比较满足此条件的条件abs(dic[x[0]] - dic[x[1]]) < 1.0001元素将返回。