【问题标题】:How to count integers within a tuple?如何计算元组中的整数?
【发布时间】:2022-11-30 05:47:24
【问题描述】:

所以我有一个元组列表,如下所示:

[(1, 60),
 (1, 93),
 (1, 104),
 (1, 145),
 (1, 159),
 (4, 20),
 (4, 30),
 (4, 103),
 (8, 8),
 (9, 35),
 (9, 172),
 (9, 191),
 (10, 33),
 (10, 164),
 (10, 185)]

但是,元组左侧的数字应该都是唯一的。所以我想要这样的东西:

[(1, 60),
 (4, 20),
 (8, 8),
 (9, 35),
 (10, 33)]

我试图制作一些独特的功能以过滤掉它们。但是例如 count 函数不适用于整数。

【问题讨论】:

  • 这些数字代表什么?
  • 你能放弃一些你写的示例代码吗?它可能会帮助人们了解您正在尝试做什么。
  • 计数与此有什么关系?您需要确定的是元组中的第一个元素之前是否已经出现过 - 集合中的成员身份是确定该元素的合理方法。

标签: python


【解决方案1】:

列表中的每个元组都有两个元素。让我们称第一个为“钥匙”。

我们将创建一个空列表来填充我们想要的元组。 我们还创建一个包含我们已经添加的密钥的集合 (already_added)。对于每个元组,我们需要检查“键”是否存在于already_added 中,如果不存在,则仅将其添加到我们的结果中。

lst = [(1, 60),
 (1, 93),
 (1, 104),
 (1, 145),
 (1, 159),
 (4, 20),
 (4, 30),
 (4, 103),
 (8, 8),
 (9, 35),
 (9, 172),
 (9, 191),
 (10, 33),
 (10, 164),
 (10, 185)]

result = []
already_added = set()

for item in lst:
    if item[0] not in already_added:
        result.append(item)
        already_added.add(item[0]) 

这给了我们以下result

[(1, 60), (4, 20), (8, 8), (9, 35), (10, 33)]

【讨论】:

    【解决方案2】:
    test = [(1, 60),
     (1, 93),
     (1, 104),
     (1, 145),
     (1, 159),
     (4, 20),
     (4, 30),
     (4, 103),
     (8, 8),
     (9, 35),
     (9, 172),
     (9, 191),
     (10, 33),
     (10, 164),
     (10, 185)]
    seen = set()
    print([x for x in test if x[0] not in seen and not seen.add(x[0])])
    >>>
    [(1, 60), (4, 20), (8, 8), (9, 35), (10, 33)]
    

    【讨论】:

      【解决方案3】:

      这是我的简单解决方案:

      x=[(1, 60),
       (1, 93),
       (1, 104),
       (1, 145),
       (1, 159),
       (4, 20),
       (4, 30),
       (4, 103),
       (8, 8),
       (9, 35),
       (9, 172),
       (9, 191),
       (10, 33),
       (10, 164),
       (10, 185)]
      x.reverse()
      l={i:(i,j) for i,j in x}
      filter_list = list(l.values())
      filter_list.reverse()
      

      由于您关心第一次出现,我们将列表还原以将元素添加到字典中,因为我们使用第一个整数作为键,元素将被覆盖,最后出现的将是您的第一次出现,然后我们保留值并再次还原列表。

      【讨论】:

        猜你喜欢
        • 2016-05-25
        • 2014-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多