假设我有一个包含以下键的字典:值
{A1:2345, A2:23, A3:1}
我只想从A1中删除'23',并期望输出为
{A1:45, A2:23, A3:1}
请咨询
答案 0 :(得分:1)
根据您的评论,23
只会出现一次,您可以在字符串上调用re.sub
并将其写回字典。因此,如果字典名为dic
:
import re
dic['A1'] = re.sub('23','',dic['A1'],1)
,1
是可选的,并表示您只会替换第一次出现(但它可以提高效率)。例如:
$ python3
Python 3.5.2 (default, Nov 17 2016, 17:05:23)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> dic={'A1':'2345', 'A2':'23', 'A3':'1'}
>>> import re
>>> dic['A1'] = re.sub('23','',dic['A1'],1)
>>> dic
{'A2': '23', 'A3': '1', 'A1': '45'}
修改强>:
根据您的评论,您希望从2
以外的所有元素的值中删除3
和'A9'
s。您可以使用for
循环来实现此目的:
import re
for key,val in dic.items():
if key != 'A9':
dic[key] = re.sub('2|3','',val)
正则表达式中的管道(|
)用作“或”。所以:
$ python3
Python 3.5.2 (default, Nov 17 2016, 17:05:23)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> dic={'A1':'5', 'A2':'1', 'A3': '2379', 'A4':'8', 'A5':'37', 'A6':'379', 'A7':'6', 'A8':'4', 'A9':'23'}
>>> import re
>>>
>>> for key,val in dic.items():
... if key != 'A9':
... dic[key] = re.sub('2|3','',val)
...
>>> dic
{'A3': '79', 'A2': '1', 'A4': '8', 'A6': '79', 'A1': '5', 'A8': '4', 'A5': '7', 'A9': '23', 'A7': '6'}
答案 1 :(得分:1)
我只想从A1中移除'23'......那将不会发生23 不会发生两次
在您的简单情况下,使用repr()
函数就足够了:
d = {'A1':2345, 'A2':23,'A3':1}
d['A1'] = int(repr(d['A1'])[2:]) # getting slice of characters starting from index 2
print(d)
输出:
{'A1': 45, 'A3': 1, 'A2': 23}
如果所有值都是字符串,则更简单:
d['A1'] = d['A1'][2:]