假设我有以下键的字典:值如何从python中的字典中删除某些字符?
{A1:2345, A2:23, A3:1}
我只是想从A1删除“23”和预期的输出为
{A1:45, A2:23, A3:1}
请指点
假设我有以下键的字典:值如何从python中的字典中删除某些字符?
{A1:2345, A2:23, A3:1}
我只是想从A1删除“23”和预期的输出为
{A1:45, A2:23, A3: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
S和3
S,除了'A9'
。你可以用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'}
感谢您的回复。有没有一种方法可以遍历整个字典,如{A1:5,A2:1,A3:2379,A4:8,A5:37,A6:379,A7:6,A8:4,A9:23}并期望输出像{A1:5,A2:1,A3:79,A4:8,A5:7,A6:79,A7:6,A8:4,A9:23} –
@KinshukSrivastava:在你的例子中'A9'没有被改变......这是一个错误吗? –
没有呃,这不是一个错误。我知道A9有23,我想从辞典A9中删除字典中出现的所有2和3。 –
我只是想从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:]
我不希望索引被修复。有没有一种方法可以遍历整个字典,如{A1:5,A2:1,A3:2379,A4:8,A5:37,A6:379,A7:6,A8:4,A9:23}并期望输出如{A1:5,A2:1,A3:79,A4:8,A5:7,A6:79,A7:6,A8:4,A9:23} –
@RomanPerekhrest:它说这些评论是字符串... –
@WillemVanOnsem,看看我的答案的第二部分'd ['A1'] = d ['A1'] [2:]' – RomanPerekhrest
什么是元素的类型?字符串? –
此外,如果'23'发生两次,例如''23452345'',会发生什么...... –
是的,它是字符串 –