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

时间:2018-06-18 14:38:24

标签: python python-3.x dictionary-comprehension

有2个字典我想将dict1的值插入dict2但是在dict2中的特定位置

以这种方式解决的

I asked a similar question here

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

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

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>'
 }

将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 个答案:

答案 0 :(得分:2)

您可以使用+-----------------+------------+- | A | B | C | +-----------------+------------+- | a1 | b1 | c1 | | a2 | b2 | NULL | | NULL | b3 | NULL | +-----------------+------------+-

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()}

答案 1 :(得分:1)

与第一个问题的答案相同,这是我使用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>'
#  }

答案 2 :(得分:0)

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>'
 }