从 dict1 更新 dict2 的值,但在 dict2 的特定位置
Update value of dict2 from dict1 but in a specific place in dict2
有 2 个字典,我想将 dict1 的值插入 dict2,但在 dict2 的特定位置
是这样解决的:
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>'
}
您可以使用 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>'}
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>'
}
与第一个问题的答案相同,这是我使用 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=" ' + 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 个字典,我想将 dict1 的值插入 dict2,但在 dict2 的特定位置
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>'
}
您可以使用 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>'}
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>'
}
与第一个问题的答案相同,这是我使用 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=" ' + 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>'
# }