如何获取包含最接近给定元组的元组

时间:2018-10-04 10:07:45

标签: python python-3.x

我有一个元组列表:

x = [('abc', (7, 1, 8, 41), None), ('efg', (12, 2, 13, 42), None)]
element = (13, 2, 14, 78)

我需要获取具有最接近“元素”的元组的元组。 即我需要以('efg',(12,2,13,42),无)的答案来获取元素= (13,2,14,78) >

如何在python中做到这一点?

2 个答案:

答案 0 :(得分:1)

这很简单。让我们逐步解决您的问题。

通过2个元组匹配项进行计数,并获得最大

maxCount = 0
index = 0
for i,item in enumerate(x):
  count = 0
  for a in element:
    if a in item[1]:
      count+=1
  if maxCount < count:
    index = i

print(x[i])

答案 1 :(得分:0)

另一种方法是获取ele & i[1] for i in x集的对称差异。我们可以用每个新的set以及它来自的x的索引来组成一个元组。然后,我们可以从此处按set对新的len进行排序,并使用set with the smallest len which is also the least different, and plug that into x`

来获取tuple的索引部分。
res = [(set(element) ^ set(i[1]), x.index(i)) for i in x]
res = sorted(res, key=lambda x: len(x[0]))
# ('efg', (12, 2, 13, 42), None)