【问题标题】:Python - Move elements in a list of dictionaries to the end of the listPython - 将字典列表中的元素移动到列表的末尾
【发布时间】:2017-07-10 21:57:12
【问题描述】:

我有一个这样的字典列表:

lst = [
  {'id': 1, 'language': 'it'},
  {'id': 2, 'language': 'en'},
  {'id': 3, 'language': 'es'},
  {'id': 4, 'language': 'en'}
  ]

我想将每个具有language != 'en' 的字典移到列表的末尾,同时保持其他结果的顺序。所以列表应该是这样的:

lst = [ 
  {'id': 2, 'language': 'en'},
  {'id': 4, 'language': 'en'},
  {'id': 1, 'language': 'it'},
  {'id': 3, 'language': 'es'}
  ]

【问题讨论】:

    标签: python list sorting dictionary


    【解决方案1】:

    使用排序。想法是排序是否等于'language'。如果语言等于'en',则键函数将返回False,否则返回True (False True)。由于 Python 的排序是稳定的,因此将保留顺序。

    >>> sorted(lst, key=lambda x: x['language'] != 'en')
    [{'id': 2, 'language': 'en'},
     {'id': 4, 'language': 'en'},
     {'id': 1, 'language': 'it'},
     {'id': 3, 'language': 'es'}]
    

    【讨论】:

    • 你可以补充说它可以工作,因为 python 排序是 stable
    • @Jean-FrançoisFabre 是的,我正在编辑它。 :-)
    猜你喜欢
    • 2023-03-17
    • 2011-06-22
    • 2016-06-16
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    • 2019-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多