我有一个像
这样的字典dict = { '12' : '5+2',
'5' : 'xyz',
'2' : 'abc' }
所以我希望更新后的字典是
dict = { '12' : 'xyz+abc',
'5' : 'xyz',
'2' : 'abc' }
注意:我知道键'12'的值包含'5'和'2',因此不需要迭代,我只是想用xyz代替5,用abc代替2。请建议。
我会在字典推导中使用正则表达式:
dic = {'12' : '5+2', '5' : 'xyz', '2' : 'abc'}
import re
# create the regex from the keys
# use the longer strings first to match "12" before "2"
pattern = '|'.join(map(re.escape, sorted(dic, key=lambda x: -len(x))))
# '12|5|2'
out = {k:re.sub(pattern, lambda m: dic.get(m.group()), v) for k,v in dic.items()}
输出:
{'12': 'xyz+abc', '5': 'xyz', '2': 'abc'}
你只是做了一个链式重赋:
dict['<key2>'], dict['<key1>'] = dict['<key1>'], dict['<key2>']
这是一个交换操作。
也可以连接由键引用的字典值。在你的例子中:
dict1['12'] = dict1['5'] + "+" + dict1['2']
我也会建议你不要使用python关键字,比如"dict"作为变量名。