提问人:Jayshwor Khadka 提问时间:5/25/2022 最后编辑:Jayshwor Khadka 更新时间:5/25/2022 访问量:621
在 Python 中遍历字典列表并返回值
Iterate through list of dictionaries in Python and return value
问:
我有一个这种格式的词典列表:
user_input =[{
'user':'guest',
'record':
'{"message":"User Request","context":{"session_id":"YWOZe"},"level":100}'
},
{
'user':'guest',
'record':
'{"message":"User Inquiry","context":{"session_id":"YWOZf"},"level":100}'
},
]
我想要的是,我想通过遍历两个字典在 eval(user_input[0]['record']) 和 eval(user_input[1]['record']) 中使用 eval,到目前为止,我可以为一个字典做
def record_to_objects(data:dict):
new_dict = {}
for key, value in data.items():
if data[key] == data['record']:
new_dict['record'] = eval(data['record'])
r = data
del r['record']
return {**r, **new_dict}
但是对于列表中的两个词典,我只得到了一个结果(作为最后一项)使用“double for loop”,也许我没有以正确的方式返回。 预期输出:
output = [
{'user': 'guest',
'record': {'message': 'User Request',
'context': {'session_id': 'YWOZe'},
'level': 100}},
{'user': 'guest',
'record': {'message': 'User Inquiry',
'context': {'session_id': 'YWOZf'},
'level': 100}}
]
有人可以帮我吗?我想要一个词典列表,两者都应该通过 eval 方法处理。
答:
3赞
BrokenBenchmark
5/25/2022
#1
这看起来像 JSON。为此,您不应该使用 eval()。
相反,请与循环一起使用:json.loads()
for
import json
for item in user_input:
item["record"] = json.loads(item["record"])
这输出:
[
{
'user': 'guest',
'record': {'message': 'User Request', 'context': {'session_id': 'YWOZe'}, 'level': 100}
},
{
'user': 'guest',
'record': {'message': 'User Inquiry', 'context': {'session_id': 'YWOZf'}, 'level': 100}
}
]
评论
0赞
Jayshwor Khadka
5/25/2022
我还想要剩余的数据,而不仅仅是 item['record'],我如何获取剩余数据并与每个字典的这些输出合并。
0赞
BrokenBenchmark
5/25/2022
请参阅对我的帖子的编辑。
0赞
Jayshwor Khadka
5/25/2022
谢谢,差不多得到了结果,但我仍然想要一个词典列表,这给了我一整本词典。 而我想要一个词典列表,以便我可以调用[0]等等。{'user': 'guest', 'record': {'message': 'User Request', 'context': {'session_id': 'YWOZe'}, 'level': 100}}, {'user': 'guest', 'record': {'message': 'User Inquiry', 'context': {'session_id': 'YWOZf'}, 'level': 100}}
1赞
BrokenBenchmark
5/25/2022
@JayshworKhadka 这是一个没有前导和尾随括号的词典列表。
上一个:遍历嵌套列表 [R] 的某些元素
下一个:根据自定义条件订购嵌套列表
评论
eval