2013-03-09 2 views
1

У меня есть словарь, как следующийудалить символ из словаря в Python

d = {'MNDTHNFEYH': ' 7.4775763897997019', 'MNDTNNTEYS': ' 7.6740344272610006', 
    " ['MAPTNNTEYH": '[7.2142815502006803', 'MFPTNNTEYS': ' 7.5108109773494114', 
    'MFDTHNAEYH': ' 7.6695035046773761'} 

В этом словаре, я попытался удалить [, но я не получаю it.So, что он должен выглядеть

d = {'MNDTHNFEYH': ' 7.4775763897997019', 'MNDTNNTEYS': ' 7.6740344272610006', 
    'MAPTNNTEYH': ' 7.2142815502006803', 'MFPTNNTEYS': ' 7.5108109773494114', 
    'MFDTHNAEYH': ' 7.6695035046773761'} 

Пожалуйста, помогите мне.

+2

Ваш желаемый результат удаляет больше, чем просто '['. Он также удаляет некоторые кавычки и пробелы в ключах (но не значениях) ... – mgilson

ответ

2
{k.translate(None,'''[ '"'''):v.translate(None,'[') for k,v in d.items()} 
+0

Я бы сказал, поставьте его в функцию, и его можно использовать повторно, а не только «['и']». –

+2

@SuperDisk - конечно ... Я до сих пор не совсем уверен, что хочет OP ... так что трудно дать полный ответ, чтобы отвлечь меня ... – mgilson

+0

err ... Это должно было сказать «летучая мышь» " – mgilson

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()) 
1

Если у вас есть только алфавиты в вашем ключе и плавают в значении, которые вы можете использовать regex, чтобы устранить каждый другой символ

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'} 
Смежные вопросы