python - 使用相同的值和不同的键更新字典
问题描述
我有两个具有不同键但可以具有相同值的字典。
dict1 = {key1:[['abc','12'],['xyz','34'],['pqr',[56]]],key2:[['name','lin'],['age','yes']]}
dict_2 = {key3: '(( value(abc) = literal(12) or value(like) = literal(music) ) and (value(PRICELIST) in propval(valid))'}
如果您看到两个字典都有可能在两者中重复的值。我想要实现的是:value
用dict_2
.dict_1
我期待的输出是:
dict_2 = {key3:'(key1 or value(like) = literal(music) )....'}
我可以使用相同的键进行 dict 操作,但可以找出不同键但值相同的情况。
编辑: 我注意到要考虑的几件事:
value
和之间的运算符literal
也必须考虑。例如abc > 10
,现在也应该替换它,因为它的值abc = 12
实际上大于 10。正如@DirtyBit 建议的那样,我只打算替换 dict_2 上的部分值。
因此,我尝试将正则表达式添加到我的代码中以拆分元素,它按预期工作,但仍然无法用 dict_1 中的匹配键替换:
for (k,v), (k2,v2) in zip(dict1.items(), dict_2.items()):
#print(v2)
for element in re.findall('([a-zA-Z0-9\._]+(?:\()[a-zA-Z0-9\._]+(?:\))[\s=<>(?:in)]+[a-zA-Z0-9\._]+(?:\()[a-zA-Z0-9\._]+(?:\)))',v2):
# print(element)
print(k2, ": ", v2.replace(element, k))
解决方案
继续问题的评论:
dict1 = {
'key1':[['abc','12'],['xyz','34'],['pqr',[56]]],
'key2':[['name','lin'],['age','yes']]
}
dict_2 = {
'key3': '(( value(abc) = literal(12) or value(like) = literal(music) ) and (value(PRICELIST) in propval(valid))',
'key4': '(( value(abc) = literal(12) or value(like) = literal(music) ) and (value(PRICELIST) in propval(valid))'
}
res = {}
# desired
# dict_2 = {key3:'(key1 or value(like) = literal(music) )....'}
for (k,v), (k2,v2) in zip(dict1.items(), dict_2.items()):
print(k2, ": ", v2.replace("( value(abc) = literal(12)", k))
输出:
key3 : (key1 or value(like) = literal(music) ) and (value(PRICELIST) in propval(valid))
key4 : (key2 or value(like) = literal(music) ) and (value(PRICELIST) in propval(valid))
推荐阅读
- google-analytics - 是否可以将特定 SKU 购买与特定活动联系起来?
- python - 使用不同的 id 更新所有字典值
- python-3.x - Python:根据另一列上的数据在 csv 文件中创建新列和行
- sql - 递归 CTE 的滞后
- javascript - 什么可能以这种方式“干扰”DataTables AJAX 滚动条?
- python - 在 Python 中使用 Lambda 表达式进行情感分析
- javascript - 多行匹配的正则表达式
- python - xlworkbook 类的静态方法出现 EOF 错误
- android - 检测到 nfc 贴纸时启动 Web 请求
- wordpress - 如何使用 301 重定向的重写规则删除 URL 中的所有 ? 源行代码