2017-07-20 128 views
-1

我試圖從Python 3.5中的字典列表中刪除空格。從字典列表中刪除空格

我有這樣的:

lst_of_dicts = [{'code': 'AB DE', 'score': 30}, 
       {'code': 'DE FG', 'score': 40}] 

而想要這樣的:

lst_of_dicts = [{'code': 'ABDE', 'score': 30}, 
       {'code': 'DEFG', 'score': 40}] 

其他answers已經使用字典理解建議.strip(),比如這個:

clean_d = { k:v.strip() for k, v in d.iteritems()} 

但我避風港由於我是一個蟒蛇新手,我無法使它適用於我的數據結構。

+1

你可能有 '分數' 的問題,因爲它的類型'int'和'int'沒有.strip() –

+0

對於k ,v in item.items(): item [k] = v.replace('','')試試這個 –

+0

[''str.strip()'](https://docs.python.org/3/ library/stdtypes.html#str.strip)返回一個字符串的副本,其中*前導字符和尾部字符被移除。您正在尋找['str.replace()'](https://docs.python.org/3/library/stdtypes.html#str.replace)。 –

回答

5

不要出汗。只需使用for循環:

In [693]: for d in lst_of_dicts: 
    ...:  d['code'].replace(' ', '') 
    ...:  

In [695]: lst_of_dicts 
Out[695]: [{'code': 'ABDE', 'score': 30}, {'code': 'DEFG', 'score': 40}] 

此解決方案非常特定於您的數據。對於在子詞典所有的字符串項工作有一個大致的解決方案,你可能會考慮在嵌套循環中的關鍵迭代:

for d in lst_of_dicts: 
    for k in d: 
     if isinstance(d[k], str): 
      d[k].replace(' ', '') 
+0

+1代替',儘管應該指出,這將只會改變對應於'代碼'鍵的值(這對於OP的例子來說是正確的,但不是一般的解決方案)。 –

+1

@PierceDarragh好點。添加了一個通用的解決方案:) –

+0

這工作,謝謝@COLDSPEED –

1

也許這將做你想做的。但帶不能刪除字符串內的空間。

def strip_string(value): 
    if isinstance(value, str): 
     value = value.strip() 
    return value 

clean_d = { k: strip_string(v) for k, v in d.iteritems() } 

所以更改strip_string()這樣的

def strip_string(value): 
    if isinstance(value, str): 
     value = value.replace(' ', '') # this will remove space 
    return value