在 Python 中遍历字典列表并返回值

Iterate through list of dictionaries in Python and return value

提问人:Jayshwor Khadka 提问时间:5/25/2022 最后编辑:Jayshwor Khadka 更新时间:5/25/2022 访问量:621

问:

我有一个这种格式的词典列表:

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 方法处理。

Python 字典 eval nested-loops nested-lists

评论

1赞 alani 5/25/2022
我认为如果您可以编辑问题以显示您希望在此示例中获得的输出,那会更清楚。最有可能的是,一个好的解决方案不会涉及使用 .eval
0赞 Fredericka 5/25/2022
如果我理解得很好,您想将表示 dict 的字符串替换到计算的 dict(对象)中吗?

答:

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 这是一个没有前导和尾随括号的词典列表。