在元组列表中使用对分?

2024-05-19 16:36:10 发布

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

我在想如何在元组列表中使用对分 例如

[(3, 1), (2, 2), (5, 6)]

如何根据每个元组中的[1]将这个列表平分?

list_dict [(69, 8), (70, 8), ((65, 67), 6)]
tup1,tup2 (69, 8) (70, 8)
list_dict [((65, 67), 6)]
fst, snd ((65, 67),) (6,)

我插入到二等分

idx = bisect.bisect(fst, tup1[1]+tup2[1])

给了我unorderable types: int() < tuple()


Tags: 列表dictlistinttypes元组fstidx
3条回答

在某些情况下

bisect(list_of_tuples, (3, None))

就够了。

因为None比任何整数都要小,所以这将为您提供以至少3开头的第一个元组的索引,如果所有元组都小于3,则为len(list_of_tuples)。注意list_of_tuples是排序的。

您可以将值分隔成单独的列表。

from bisect import bisect

data = [(3, 1), (2, 2), (5, 6)]
fst, snd = zip(*data)
idx = bisect(fst, 2)

但是,请注意,要使bisect工作,您的数据确实应该被排序。。。

检查文档的底部:http://docs.python.org/3/library/bisect.html。如果要与元素本身以外的内容进行比较,则应创建一个单独的所谓键列表。在您的例子中,一个int列表只包含元组的[1]。使用第二个列表来计算具有等分的索引。然后使用它将元素插入到原始的(元组列表)中,并将键([1]元组)插入到新的键列表(int列表)中。

相关问题 更多 >