【问题标题】:How to get first item of each tuple in a list / python如何获取列表/ python中每个元组的第一项
【发布时间】:2014-01-09 23:59:14
【问题描述】:

我已经在 python 3.3.3 中像这样初始化了一个字典:

# dict with dates and name
my_dict = {'keyone': '2013-04-22', 'keytwo': '2013-04-25'}

我已使用以下 sn-p 按值对这个 dict 进行反向排序:

# sort reverse by value
my_list = sorted(my_dict.items(), key=lambda x:x[1], reverse=True)

# will output a list of tuples
[('keytwo', '2013-04-25'), ('keyone', '2013-04-22')]

现在我正在尝试以相同的顺序获取键列表(每个元组的第一项):

# what I need
my_new_list = ['keytwo', 'keyone']

希望有人可以帮助我。这是非常令人沮丧和沮丧的!

很多问候,

菲利克斯

【问题讨论】:

    标签: python list key


    【解决方案1】:

    列表理解:

    my_new_list = [key for key, value in my_list]
    

    或者首先生成一个键列表:

    my_new_list = sorted(index_dict, key=index_dict.get, reverse=True)
    

    【讨论】:

    • 非常感谢!使用第二种解决方案!
    • 第二个例子中是否需要key=index_dict.get?如果您确实需要它,替代方法可能是 sorted(index_dict.keys(), reverse=True),它的输入更少,并且在 python3 上,.keys() 返回一个生成器,因此它不应该是内存效率低下。
    • @SethMMorton:是的,key=index_dict.get 是必要的。我们希望通过键的关联值而不是键本身对键进行排序。此外,keys() 调用不是必需的,因为遍历 dict 会遍历键,而在 Python 3 上,keys() 返回的是视图,而不是生成器。
    • 啊。我没有注意到它们是按价值排序的。我想我应该在发表评论之前考虑一下。
    【解决方案2】:
    new_list = map(operator.itemgetter(0),my_list)
    

    【讨论】:

      【解决方案3】:

      您可以使用list comprehension:

      >>> my_dict = {'keyone': '2013-04-22', 'keytwo': '2013-04-25'}
      >>> my_list = sorted(my_dict.items(), key=lambda x:x[1], reverse=True)
      >>> my_new_list = [x[0] for x in my_list]
      >>> my_new_list
      ['keytwo', 'keyone']
      >>>
      

      【讨论】:

      • 非常感谢@iCodez!
      【解决方案4】:
      >>> d = {'keyone': '2013-04-22', 'keytwo': '2013-04-25'}
      >>> sorted(d, key=d.get, reverse=True)
      ['keytwo', 'keyone']
      

      【讨论】:

        猜你喜欢
        • 2017-11-05
        • 2019-07-25
        • 2014-04-20
        • 2019-05-20
        • 1970-01-01
        • 1970-01-01
        • 2012-08-21
        • 2012-05-30
        • 2021-12-03
        相关资源
        最近更新 更多