【问题标题】:How to rename dictionary keys to follow sequential order?如何重命名字典键以遵循顺序?
【发布时间】:2023-04-05 03:04:01
【问题描述】:

我的代码处理字典,大多数字典采用以下格式:

#Default
d = {0:'a', 1: 'b', 2:'c', 3:'d', 4: 'e', 5:'f', 6:'g', 7:'h', 8:'i', 9:'j', 10:'k'}

然而,在某些情况下,字典会遗漏键值对并采用以下格式:

d1 = {0:'a', 1: 'b', 2:'c', 3:'d', 4: 'e', 6:'g', 7:'h', 8:'i', 9:'j', 10:'k'}
d2 = {1: 'b', 2:'c', 4: 'e', 6:'g', 7:'h', 8:'i', 9:'j'}

如何重新排列这些字典中的键以遵循如下预期输出中所示的顺序格式?

expected1 = {0:'a', 1: 'b', 2:'c', 3:'d', 4: 'e', 5:'g', 6:'h', 7:'i', 8:'j', 9:'k'}
expected2 = {0: 'b', 1:'c', 2: 'e', 3:'g', 4:'h', 5:'i', 6:'j'}

【问题讨论】:

  • 像你描述的那样的字典基本上是一个list,键是索引位置。
  • 你想要做什么的目标是什么?当你创建一个字典时,键是有语义的,不建议改变它,正如@Ma0 所说,列表更合适
  • 目标是将实例、对象类和其他指标配对作为键的值作为输出。一旦检测到不需要对象类,就会从字典中丢弃键值。稍后在处理过程中,从值中的其他元素中使用了其他一些元素,重要的是要保持这些元素的顺序。

标签: python dictionary key key-value sequential


【解决方案1】:

一个简单的字典理解:

d2 = {i: v for i, v in enumerate(d2.values())}

正如 Ma0 在 cmets 中所说,列表会更合适。您可以将列表检索为d1.values()

【讨论】:

  • d2 = {i: v for i, v in enumerate(d2.values())} 假设python 3.6+
  • @Ma0 是的,更好。
  • {k: d[k] for k in range(len(d.keys))} 导致 TypeError: object of type 'builtin_function_or_method' has no len()
  • {i: v for i, v in enumerate(d2.values())} 给出了预期的输出,谢谢!
  • 我的错,错过了 ()。
猜你喜欢
  • 1970-01-01
  • 2013-05-04
  • 1970-01-01
  • 2010-11-04
  • 2015-10-21
  • 2021-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多