代码之家  ›  专栏  ›  技术社区  ›  Paul Gwamanda

从dict1更新dict2的值,但在dict2的特定位置

  •  0
  • Paul Gwamanda  · 技术社区  · 6 年前

    有两个字典,我想把dict1的值插入到dict2中,但是在dict2中的一个特定位置

    I asked a similar question here 就这样解决了:

    d = {k: v.replace(k, k+' '+dict1[k]) for k, v in dict2.items()}
    

    但我对我们如何解决类似的问题感兴趣:

    命令1

    {
    'apple': 'hard tasty', 'orange': 'soft tasty', 'banana': 'soft very-tasty'
    }
    

    命令2

    {
     'apple': '<div class="a"></div>',
     'orange': '<div class="o"></div>',
     'banana': '<div class="b a"></div>'
     }
    

    将dict1的值插入“class=”变量内的dict2中,使其成为:

    {
     'apple': '<div class="a hard tasty"></div>',
     'orange': '<div class="o soft tasty"></div>',
     'banana': '<div class="b a soft very-tasty"></div>'
     }
    
    3 回复  |  直到 6 年前
        1
  •  2
  •   Ajax1234    6 年前

    你可以使用 re.sub :

    import re
    d = {'apple': 'hard tasty', 'orange': 'soft tasty', 'banana': 'soft very-tasty'}
    d1 = {'apple': '<div class="a"></div>', 'orange': '<div class="o"></div>', 'banana': '<div class="b a"></div>'}
    new_d = {a:re.sub('(?<=class\=")[\w+\s\-\_]+(?=")', lambda x:x.group()+' '+d[a], b) for a, b in d1.items()}
    

    输出:

    {'apple': '<div class="a hard tasty"></div>', 'orange': '<div class="o soft tasty"></div>', 'banana': '<div class="b a soft very-tasty"></div>'}
    
        2
  •  1
  •   Laurent H. chthonicdaemon    6 年前

    与第一个问题的答案一样,下面是我的解决方案 re.sub :

    import re
    
    dict1 = {'apple': 'hard tasty', 'orange': 'soft tasty', 'banana': 'soft very-tasty'}
    
    dict2 = {'apple': '<div class="a"></div>',
             'orange': '<div class="o"></div>',
             'banana': '<div class="b a"></div>'
            }
    
    d = {k: re.sub(r'class="([\w\- ]+)"', r'class="\1 ' + dict1[k] + '"', v) for k,v in dict2.items()}
    
    print(d)
    # {
    #  'apple': '<div class="a hard tasty"></div>',
    #  'orange': '<div class="o soft tasty"></div>',
    #  'banana': '<div class="b a soft very-tasty"></div>'
    #  }
    
        3
  •  0
  •   Druta Ruslan    6 年前
    first = {
    'apple': 'hard tasty', 'orange': 'soft tasty', 'banana': 'soft very-tasty'
    }
    
    second = {
    'apple': '<div class="a"></div>',
    'orange': '<div class="o"></div>',
    'banana': '<div class="b a"></div>'
    }
    
    for k, v in second.items():
        lst = v.split("\"", 2)
        second[k] = "{} {}\"{}".format("\"".join(lst[:-1]), first[k], lst[-1])
    

    产量

     {
     'apple': '<div class="a hard tasty"></div>',
     'orange': '<div class="o soft tasty"></div>',
     'banana': '<div class="b a soft very-tasty"></div>'
     }