python - 通过列表理解或任何其他方法解决嵌套字典迭代

标签 python dictionary dictionary-comprehension

我有一个dict包含另一个 dict里面有

d1 = {'a':{'p':1, 'q':2, 'r':'abc'}, 
      'b':{'p':5, 'q':6, 'r':["google", "pypi.org"]}
     }
url1 = "https://google.com"
url2 = "https://abc.com"

现在我想做的是对 r 的值进行检查来自 dict values但我不想要任何代码冗余。这怎么可能?

我现在正在做的是:-

for k, v in d1.iteritems():
    if isinstance(v['r'], list):
        for l in v['r']:
            if url1.find(l):
                ..Do something..
            else:
                continue
    else:
        if url1.find(v['r'):
                ..Do Something same as above..
            else:
                continue

现在问题出现在同样的 Do something 上。 重复2次,有没有办法通过理解或任何其他方法来解决冗余,除了函数制作和调用

编辑 - 代码已经位于大型函数定义中,因此除了创建另一个函数并调用它之外,请提供其他解决方案。

最佳答案

您可以转换非列表项,即。在本例中将字符串转换为列表,然后简单地迭代该列表。而且您不需要 else: continue 部分:

for k, v in d1.iteritems():
    value = v['r'] if isinstance(v['r'], list) else [v['r']]
    for l in value:
        if url1.find(l):
           #Do something..

关于python - 通过列表理解或任何其他方法解决嵌套字典迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23930302/

相关文章:

python - 如何获取多个多数据中的点

python - 如何将键移入值并将索引作为apache日志中字典中的键

python - 使用 dict_keys 将字典列表转换为 CSV 字符串

python - 从字典内的列表创建字典

python - 生成内置类型值的字典理解

python - 无法使用割炬创建张量

python - 如何添加此 mayavi 3d 图的涟漪?

ios - UILocalNotification 用户信息中的 Swift 字典

python - 使用现有字典创建新字典并列出

python - 如果值匹配,则将一个字典数组中的特定值合并到另一个字典数组中