Python 使用字典缩减元组列表

Python 使用字典缩减元组列表,python,dictionary,tuples,Python,Dictionary,Tuples,我正试着用字典来删减元组列表。起点如下所示。我还包括了一个字典——字典中的值是我试图用来减少元组列表的值 start = [('bryan', 'lucy'), ('david', 'lucy')] dic = {'bryan': 4.9, 'lucy': 7.5, 'david': 8.0} 我希望删除任何元素差大于1(根据字典中的值)的元组。在这种情况下,所需的输出为 [('david','lucy')] b/c大卫-露西的绝对值=0.5 这是我解决问题的(失败的)尝试 end = [

我正试着用字典来删减元组列表。起点如下所示。我还包括了一个字典——字典中的值是我试图用来减少元组列表的值

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

dic = {'bryan': 4.9, 'lucy': 7.5, 'david': 8.0}
我希望删除任何元素差大于1(根据字典中的值)的元组。在这种情况下,所需的输出为

[('david','lucy')]
b/c大卫-露西的绝对值=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]])
end=[]
对于范围(0,len(开始))中的i:
如果abs(dic[start[i][0]]-dic[start[i][1]])小于1.0001:
end.append(dic[start[i]]

如果您有任何帮助,我们将不胜感激。

列表理解可以帮助您

[(e,o) for e, o in start if -1 < dic[e]-dic[o] < 1]
[(e,o)用于启动时的e,o,如果-1
试试这个

In [13]: [x for x in start if abs(dic[x[0]] - dic[x[1]]) < 1.0001]
Out[13]: [('david', 'lucy')]
[13]中的
:[x表示abs启动时的x(dic[x[0]]-dic[x[1]])<1.0001]
出[13]:[(‘大卫’、‘露西’)]

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

列表理解可以使其成为一行

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

[(左、右)用于防抱死制动系统(驾驶员信息中心[l]-驾驶员信息中心[r])起动时的(左、右)嗨,这可能很好地解决了这个问题……但如果你能提供一点关于它如何工作以及为什么工作的解释,那就太好了:)别忘了——堆栈溢出上有很多新手,他们可以从你的专业知识中学到一两件事——你显然知道的对他们来说可能不是这样。:)别告诉我(在评论中),编辑您的答案…这是您答案的一部分。;)