我会这样做,在列表理解中使用字典理解。
的字典解析重建词典,但改变了值,如果:
改造正在采取正确的部分的领先空间。
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理解还没有提供,编辑替代解决方案,应该工作正常(给出相同的结果!!) –