我会在列表推导中使用字典推导来做到这一点。
字典推导会重建字典,但在以下情况下会改变值:
- 键是
key3 AND
- 字符串的前 2 个字符是数字
改变占据了前导空间的正确部分。
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]