【问题标题】:List of tuples with numbers and strings带有数字和字符串的元组列表
【发布时间】:2012-12-16 01:55:20
【问题描述】:

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

[(23, 'somestr'), (30, 'someotherstr'), (15, 'someotherstr2')]

我需要提取具有最小数量的元组,并获取该元组的字符串。为了找到最小值,我刚刚做了:min([i[0] for i in list])

如何得到字符串呢?嵌套列表理解?我尝试了几种方法,但我不确定如何保留元组的索引,或者在列表理解语句中获取它。

【问题讨论】:

    标签: python list tuples


    【解决方案1】:
    min(your_list)[1] #would be sufficient
    

    【讨论】:

      【解决方案2】:

      在这里,您可以直接比较元组。但是,更通用的方法是使用key 参数到min()

      In [21]: min(l, key=operator.itemgetter(0))[1]
      Out[21]: 'someotherstr2'
      

      这里,key=operator.itemgetter(0) 提取元组的第零个元素,并使用结果作为键来决定哪个元组最小。

      【讨论】:

      • 此场景中不需要密钥
      • @JakobBowyer:我认为展示这类事情一般是如何完成的很有用,这就是我回答的重点。
      • 但它没有回答这个问题。
      • @NPE key-operator.itemgetter(0) 是干什么用的?
      • @JakobBowyer:你能帮我把这个拼出来吗?在我看来,它很好地回答了这个问题。
      【解决方案3】:

      可以比较元组:

      >>> (1, 'hello') < (2, 'bye')
      True
      

      元组的比较有点像字符串:成对地考虑元素,直到找到不相等的对,然后元素越小的元组被认为越小。

      所以你可以简单地获取列表的最小值,返回第一个值最小的元组。然后可以查看第二个元素中的字符串:

      least = min(the_list)
      print least[1]
      

      【讨论】:

        【解决方案4】:
            python 3.2
        
            1. min(your_list)
        
            2. sorted(your_list)[0]
        
            3. min([(i,v) for i,v in your_list])
        

        【讨论】:

          猜你喜欢
          • 2015-11-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多