我的redis存储中有一个嵌套字典,需要找到key_2 == ""
中的所有记录,然后返回key_3
中的值。所有key_3
值都将用于运行mysql query以获取key_2
值并更新redis存储。
[
...
task_44903: {"key_1": 44903, "key_2": "", "key_3": 1}
task_44229: {"key_1": 44229, "key_2": 4, "key_3": 2}
...
]
我现在的方法是
keys = r.keys(pattern='task_*')
key_3 = set()
for key in keys:
values = r.get(key).decode('utf-8')
values = ast.literal_eval(values)
if values['key_2'] == '':
key_3.add(values['key_3'])
有没有更简洁的方法来实现这一点?
最佳答案
我不确定这是否是你想要的。
data = [
{'task_44903': {"key_1": 44903, "key_2": "", "key_3": 1}},
{'task_44229': {"key_1": 44229, "key_2": "", "key_3": 1}},
{'task_44230': {"key_1": 44229, "key_2": "", "key_3": 2}}
]
set([ v['key_3'] for item in data for _, v in item.items() if v['key_2']==""])
产量
{1, 2}