我有一个字典如下
d = {'MNDTHNFEYH': ' 7.4775763897997019', 'MNDTNNTEYS': ' 7.6740344272610006',
" ['MAPTNNTEYH": '[7.2142815502006803', 'MFPTNNTEYS': ' 7.5108109773494114',
'MFDTHNAEYH': ' 7.6695035046773761'}
在这本词典中,我试图删除[
,但我没有得到它。所以它应该看起来像
d = {'MNDTHNFEYH': ' 7.4775763897997019', 'MNDTNNTEYS': ' 7.6740344272610006',
'MAPTNNTEYH': ' 7.2142815502006803', 'MFPTNNTEYS': ' 7.5108109773494114',
'MFDTHNAEYH': ' 7.6695035046773761'}
请帮帮我。
答案 0 :(得分:2)
{k.translate(None,'''[ '"'''):v.translate(None,'[') for k,v in d.items()}
答案 1 :(得分:1)
似乎你只想从键和值前缀中删除字符“[”。 str.lstrip为你完成这项工作。您只需要遍历字典并从键和值中删除字符,同时通过字典理解重新生成字典。
>>> d={'MNDTHNFEYH': ' 7.4775763897997019', 'MNDTNNTEYS': ' 7.6740344272610006', " ['MAPTNNTEYH": '[7.2142815502006803', 'MFPTNNTEYS': ' 7.5108109773494114', 'MFDTHNAEYH': ' 7.6695035046773761'}
>>> d = {k.strip(" [\"\'"): v.strip(" [\"\'") for k, v in d.items()}
>>> import pprint
>>> pp = pprint.PrettyPrinter(indent = 4)
>>> pp.pprint(d)
{ 'MAPTNNTEYH': '7.2142815502006803',
'MFDTHNAEYH': '7.6695035046773761',
'MFPTNNTEYS': '7.5108109773494114',
'MNDTHNFEYH': '7.4775763897997019',
'MNDTNNTEYS': '7.6740344272610006'}
如果你没有使用Py2.7 +,你可以将生成器构造传递给内置的dict
>>> d = dict(k.lstrip(" [\"\'"): v.lstrip(" [\"\'") for k, v in d.items())
答案 2 :(得分:1)
假设您的密钥中只包含字母并浮动值,您可以使用正则表达式来消除所有其他字符
import re
d = {'MNDTHNFEYH': ' 7.4775763897997019', 'MNDTNNTEYS': ' 7.6740344272610006', " ['MAPTNNTEYH": '[7.2142815502006803', 'MFPTNNTEYS': ' 7.5108109773494114', 'MFDTHNAEYH': ' 7.6695035046773761'}
# In the key replace everything else that is not in A-Z with ''
# In value replace everything else that is not in 0-9 or . with ''
d = {re.sub(r'[^A-Z]+','',k):re.sub(r'[^0-9.]+','',v) for k,v in d.items()}
d
{'MAPTNNTEYH': '7.2142815502006803',
'MFDTHNAEYH': '7.6695035046773761',
'MFPTNNTEYS': '7.5108109773494114',
'MNDTHNFEYH': '7.4775763897997019',
'MNDTNNTEYS': '7.6740344272610006'}