gpt4 book ai didi

Python:从 JSON 数组中将键值转换为小写的智能方法

转载 作者:太空宇宙 更新时间:2023-11-04 09:51:21 24 4
gpt4 key购买 nike

我正在尝试进行小写数据转换。我的输入数据采用以下格式

ret = { "users":[
{"EMAIL":"jogn@doe.com","Name":"John Doe"},
{"EMail":"james@black.com","nAme":"James Black"}
]
}

输出应该是这样的

ret = { "users":[
{"email":"jogn@doe.com","name":"John Doe"},
{"email":"james@black.com","name":"James Black"}
]
}

我所做的是:

users = ret['users']
new_array = []
for item in users:
for key in item:
k = key.lower()
new_array.append({k:item[key]})

结果是我所期望的,但我想知道是否有更聪明、更好的方法来完成这项任务。有没有办法避免双重循环?

谢谢。

最佳答案

即使您的原始解决方案已经非常可读,您也可以尝试使用列表理解:

ret = { "users":[
{"EMAIL":"jogn@doe.com","Name":"John Doe"},
{"EMail":"james@black.com","nAme":"James Black"}
]
}

ret['users'] = [dict((k.lower(), v) for k, v in d.items()) for d in ret['users']]

>>> print(ret)
{'users': [{'email': 'jogn@doe.com', 'name': 'John Doe'}, {'email': 'james@black.com', 'name': 'James Black'}]}

此外,与覆盖原始数据相比,仅重建所有值都已更新的新字典可能更安全。这可以在下面证明:

result = {}

# Can be a another one-liner, but then it becomes unreadable
for key, value in ret.items():
result[key] = [dict((k.lower(), v) for k, v in d.items()) for d in value]

>>> print(result)
{'users': [{'name': 'John Doe', 'email': 'jogn@doe.com'}, {'name': 'James Black', 'email': 'james@black.com'}]}

如果你真的想要第二部分的一个类轮:

result = dict((key, [dict((k.lower(), v) for k, v in d.items()) for d in value]) for key, value in ret.items())

关于Python:从 JSON 数组中将键值转换为小写的智能方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47675123/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com