python - Redis:如何有效地检查空嵌套键

标签 python redis redis-py

我的 redis 存储中有一个嵌套字典,需要找到 key_2 == "" 中的所有记录,然后在 key_3 中返回值。然后,所有 key_3 值将用于运行 mysql 查询以获取 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}

关于python - Redis:如何有效地检查空嵌套键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57764524/

相关文章:

javascript - 获取 Django 站点中的 Disqus 中的评论是否为父评论

python - numpy genfromtxt/ Pandas read_csv;忽略引号内的逗号

redis - Redis 有序集上的 ZREM

python - 如何使用Python解析Redis流数据?

python - CSV 编写器在单独的列中显示每个字符

python - 计算数据框中的百分比然后显示为百分比而不是 float 的最有效方法

laravel - 我正在使用带有 redis 和 socket.io 的 laravel echo。存在和私有(private) channel 失败

ruby-on-rails - rails - WebSocket

apache-spark - Azure DataBricks Stream foreach 因 NotSerializableException 而失败

python - 使用 Redis 实现持久化栈数据结构