你可以创建一个简单的类,并使用
__repr__
方法来存储字符串值:
class String:
def __init__(self, val):
self.val = val
def __repr__(self):
return self.val
data = [{'name' : 'red', 'id' : '1'}, {'name' : 'yellow', 'id' : '2'}, {'name' : 'black', 'id' : '3'}, {'name' : 'white', 'id' : '4'}]
final_data = [{String(c):d for c, d in i.items()} for i in data]
输出:
[{name: 'red', id: '1'}, {name: 'yellow', id: '2'}, {name: 'black', id: '3'}, {name: 'white', id: '4'}]
为了访问字符串的值,您可以调用该属性:
string_values = [{c.val:d for c, d in i.items()} for i in final_data]
为了将类
String
应用于任意结构中的所有键,可以使用递归:
def convert_string(d):
return {String(a):convert_string(b) if isinstance(b, dict) else b for a, b in d.items()}
data = [{'name' : {'first':'blue', 'last':'black', 'known_ids':[34, 5, 12, 34]}, 'id' : '1'}, {'name' : 'yellow', 'id' : '2'}, {'name' : 'black', 'id' : '3'}, {'name' : 'white', 'id' : '4'}]
new_data = list(map(convert_string, data))
输出:
[{name: {first: 'blue', last: 'black', known_ids: [34, 5, 12, 34]}, id: '1'}, {name: 'yellow', id: '2'}, {name: 'black', id: '3'}, {name: 'white', id: '4'}]