2

次のような辞書があります

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

私を助けてください。

4

3 に答える 3

2
{k.translate(None,'''[ '"'''):v.translate(None,'[') for k,v in d.items()}
于 2013-03-09T16:43:30.100 に答える
2

キーにアルファベットのみがあり、値に浮動小数点があると仮定すると、正規表現を使用して他のすべての文字を削除できます

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'}
于 2013-03-09T17:08:55.507 に答える
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())
于 2013-03-09T16:53:12.237 に答える