【问题标题】:split a key-value pair in Python在 Python 中拆分键值对
【发布时间】:2021-07-14 11:07:10
【问题描述】:

我有一个字典如下:

 {
    "age": "76",
    "Bank": "98310",
    "Stage": "final",
    "idnr": "4578",
    "last number + Value": "[345:K]"}

我正在尝试通过拆分最后一个键值对创建一个新键(“总数据”)来调整字典,它应该如下所示:

 "Total data":¨[
 {
 "last number": "345"
 "Value": "K"
  }]
  }

有谁知道是否有基于 ':' 和 '+' 的拆分函数或 for 循环来完成此操作? 提前致谢。

【问题讨论】:

  • 首先,我建议您在问题中包含一些您尝试过的代码,否则它可能会被标记和删除。其次,你想用什么语言来解决这个问题? JSON可以被多种语言处理。第三,如果要进行所需的拆分,则必须检测键和值的格式。学习使用正则表达式来提取这些信息。

标签: dictionary split key key-value


【解决方案1】:

实现这一目标的一个选项可能是从 dict 中获取最后一个键,并在 + 上使用 split 键和 : 上的值删除外部方括号,假设数据格式始终相同。

如果您希望Total data 包含一个列表,您可以将生成的dict 包装在[]

from pprint import pprint

d = {
    "age": "76",
    "Bank": "98310",
    "Stage": "final",
    "idnr": "4578",
    "last number + Value": "[345:K]"
}

last = list(d.keys())[-1]
d["Total data"] = dict(
    zip(
        last.strip().split('+'),
        d[last].strip("[]").split(':')
    )
)
pprint(d)

输出(使用 Python 3.9.4 测试)

{'Bank': '98310',
 'Stage': 'final',
 'Total data': {' Value': 'K', 'last number ': '345'},
 'age': '76',
 'idnr': '4578',
 'last number + Value': '[345:K]'}

Python demo

【讨论】:

  • 谢谢!我还尝试了一些不同的方法(更繁琐),首先创建一个字符串,然后将其拆分并插入到新字典中,然后在删除旧键值对的同时将其插入旧字典中。另外,在我的实际示例中有很多字典,其中一些包含最后一个键值对,而另一些则不包含。这些字典是使用 for 循环生成的。您是否知道如何将上述代码集成到一个 fore 循环中,以便仅对包含“last number + Value”键值对的字典执行操作?
  • @clinicalprogrammer 您可以使用 if 检查来查看最后一个键是否等于 last number + Value 请参阅带有循环和多个字典的示例 ideone.com/AavEvM
  • 谢谢,抱歉我的回复晚了,确实有效!
猜你喜欢
  • 1970-01-01
  • 2011-06-22
  • 2015-06-19
  • 2021-12-27
  • 2021-10-27
  • 1970-01-01
  • 1970-01-01
  • 2014-10-26
  • 1970-01-01
相关资源
最近更新 更多