使用字典来减少元组列表

2024-06-16 11:48:00 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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]])

任何帮助都将不胜感激


Tags: 元素列表字典情况bryan大卫startend
3条回答

一份清单可以帮助你。你知道吗

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

试试这个

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满足此条件的元素将返回。你知道吗

一个列表可以使这成为一行

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

相关问题 更多 >