我會這樣做,在列表理解中使用字典理解。
的字典解析重建詞典,但改變了值,如果:
改造正在採取正確的部分的領先空間。
a_list = [{'key1': 'A picture 1', 'key2': 'location 1', 'key3': '20 title1'}, {'key1': 'A picture 2', 'key2': 'location 2', 'key3': '10 title2'}]
a_new_list = [{k:v.partition(" ")[2] if (k=="key3" and v[:2].isdigit()) else v for k,v in d.items()} for d in a_list]
print(a_new_list)
結果:
[{'key1': 'A picture 1', 'key2': 'location 1', 'key3': 'title1'}, {'key1': 'A picture 2', 'key2': 'location 2', 'key3': 'title2'}]
注:如果有超過2位也將刪除第一個數字。條件廣泛,應該根據您的需求進行調整。
編輯:預先的Python 2.7兼容的替代(當不存在字典內涵):
a_new_list = [dict((k,v.partition(" ")[2] if (k=="key3" and v[:2].isdigit()) else v) for k,v in d.items()) for d in a_list]
這正是我所期待的。謝謝。我在想如果我們可以用re.sub來做到這一點,但無論如何我會根據我的需求來調整。 – Twilight0
這可以在python 2.7.X中使用,但是我在python 2.6.X中得到語法錯誤:( – Twilight0
這是因爲dict理解還沒有提供,編輯替代解決方案,應該工作正常(給出相同的結果!!) –