2017-01-28 99 views
0

假设我有以下键的字典:值如何从python中的字典中删除某些字符?

{A1:2345, A2:23, A3:1} 

我只是想从A1删除“23”和预期的输出为

{A1:45, A2:23, A3:1} 

请指点

+0

什么是元素的类型?字符串? –

+0

此外,如果'23'发生两次,例如''23452345'',会发生什么...... –

+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 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'} 
+0

感谢您的回复。有没有一种方法可以遍历整个字典,如{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} –

+0

@KinshukSrivastava:在你的例子中'A9'没有被改变......这是一个错误吗? –

+0

没有呃,这不是一个错误。我知道A9有23,我想从辞典A9中删除字典中出现的所有2和3。 –

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:] 
+0

我不希望索引被修复。有没有一种方法可以遍历整个字典,如{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} –

+0

@RomanPerekhrest:它说这些评论是字符串... –

+0

@WillemVanOnsem,看看我的答案的第二部分'd ['A1'] = d ['A1'] [2:]' – RomanPerekhrest

相关问题