【问题标题】:Swap keys in list of dicts in python在python中的dicts列表中交换键
【发布时间】:2019-08-14 11:27:01
【问题描述】:

我想交换字典中的键,但保持值不变。

此脚本将用于设置服务结束日期。本质上,较新版本的发布日期是旧版本的服务结束日期。我有一个有序字典,其中包含作为键的版本和作为其值的发布日期。大致是这样的:

{'10.1.0: '2019-01-01',
 '9.3.0': '2018-11-02',
 '9.2.0': '2018-06-20',
 '9.1.0': '2018-03-06'}

我想重新排序字典,基本上将键向上移动一个位置,以便字典包含具有其继任者发布日期的版本。最新版本可以不包含任何值或被删除。我的理想结果是这样的:

{'9.3.0': '2019-01-01',
 '9.2.0': '2018-11-02',
 '9.1.0': '2018-06-20'}

【问题讨论】:

  • 您能否更具体地了解您使用的ordered dictionary 是什么?

标签: python list dictionary


【解决方案1】:

尝试使用以下代码(这只适用于 python 版本 >= 3.6):

>>> d = {'10.1.0: ':'2019-01-01',
 '9.3.0': '2018-11-02',
 '9.2.0': '2018-06-20',
 '9.1.0': '2018-03-06'}
>>> dict(zip(list(d)[1:], d.values()))
{'9.3.0': '2019-01-01', '9.2.0': '2018-11-02', '9.1.0': '2018-06-20'}

【讨论】:

  • OP 以有序字典开头。是否应该更改此内容?
  • @SimonBrahan 你是什么意思?
  • 值得一提的是,这将在 3.6+ 中工作,在此之前,dicts 是无序的(即使在 3.6 中也不应该依赖于保留顺序)。
  • @U10-Forward OP 提到了一个有序字典;这不是 python dict 的默认行为。我的第一个想法是他们正在使用这样的东西:docs.python.org/2/library/…
猜你喜欢
  • 2021-11-25
  • 1970-01-01
  • 1970-01-01
  • 2021-02-04
  • 1970-01-01
  • 2017-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多