我有一个字典,其中我想重命名一些字典键,这是小写到camel大小写,但我想保持序列。有什么办法来保持诚信吗?
我正在写一款清洁剂,它可以帮助我做同样的事情,看起来就像这样
def key_cleanser(data):
name_cleanse_dict = {
'id': 'ID',
'emailid': 'emailId',
'firstname': 'firstName',
'middlename': 'middleName',
'lastname': 'lastName',
'addressline1': 'addressLine1',
'addressline2': 'addressLine2',
'addressline3': 'addressLine3',
'postalcode': 'postalCode',
}
if isinstance(data, dict):
dictionary = data.copy()
dict_keys = list(dictionary.keys())
for key in dict_keys:
if key in name_cleanse_dict.keys():
dictionary[name_cleanse_dict[key]] = dictionary.pop(key)
key = name_cleanse_dict[key]
return dictionary
return data假设我的字典是这样的
person_data = {
'id': 5,
'firstname': 'Bob',
'lastname': 'Woolmer',
'gender': 'Male',
'country': 'USA'
'emailid': 'abs@gmail.com'
}我得到以下输出:
{
'gender': 'Male',
'country': 'USA',
'ID': 5,
'firstName': 'Bob',
'lastName': 'Woolmer',
'emailId': 'abs@gmail.com'
}我想要的输出是:
{
'ID': 5,
'firstName': 'Bob',
'lastName': 'Woolmer',
'gender': 'Male',
'country': 'USA',
'emailId': 'abs@gmail.com'
}是否有一种方法来维护一个序列,以防我在动态字典中复制它。
发布于 2019-06-07 22:04:20
如果您可以将原始字典更改为OrderedDicts,下面这样的内容就可以了:
from collections import OrderedDict
def clense_data(data):
name_cleanse_dict = {
'id': 'ID',
'emailid': 'emailId',
'firstname': 'firstName',
'middlename': 'middleName',
'lastname': 'lastName',
'addressline1': 'addressLine1',
'addressline2': 'addressLine2',
'addressline3': 'addressLine3',
'postalcode': 'postalCode',
}
if isinstance(data, dict):
return OrderedDict([(name_cleanse_dict[k], v) if k in name_cleanse_dict else (k, v) for k, v in data.items()])
return data
def main():
person_data = OrderedDict([('id', 5),
('firstname', 'Bob'),
('lastname', 'Woolmer'),
('gender', 'Male'),
('country', 'USA'),
('emailid', 'abs@gmail.com')])
print(person_data)
new_person_data = clense_data(person_data)
print(new_person_data)
if __name__ == '__main__':
main()输出:
OrderedDict([('id', 5), ('firstname', 'Bob'), ('lastname', 'Woolmer'), ('gender', 'Male'), ('country', 'USA'), ('emailid', 'abs@gmail.com')])
OrderedDict([('ID', 5), ('firstName', 'Bob'), ('lastName', 'Woolmer'), ('gender', 'Male'), ('country', 'USA'), ('emailId', 'abs@gmail.com')])发布于 2019-06-07 21:54:41
保存原始密钥:
order = d.keys()修改钥匙。按原始顺序重新构建字典:
d = {k: d[k] for k in order}此解决方案仅适用于Python 3.6+。
发布于 2019-06-07 21:59:42
您可以使用字典理解,并使用默认值的字典get方法。
{name_cleanse_dict.get(key,key):value for (key,value) in person_data.items()}订单由Python3.6+保证,否则您应该使用OrderedDict
https://stackoverflow.com/questions/56501562
复制相似问题