我们有示例Python字典,如下所示,可以由项目中的多个开发人员修改。避免开发人员添加除了给定的示例键之外,还可以避免他们在个人地址中添加不正确的zip条目( zip应该通过邮政编码验证,然后允许添加zip)等等的最佳方法。此外,“AAA”的无效密钥也不存在货币,也有无效的值,我认为我们可以使用特殊的函数dict。 add dict。 key 是其他最好的方法。
people = {1: {'name': 'John', 'age': '27', 'sex': 'Male', 'Address': { 'Door': '9-8-11', 'street': 'John-street', 'city': 'NewYork', 'zip':'99705'}, 'ExchangeCurrency':{'USD':'INR'}},
2: {'name': 'Marie', 'age': '22', 'sex': 'Female', 'Address': { 'Door': '9-8-11', 'street': 'John-street', 'city': 'NewYork', 'zip': '99705'}, 'ExchangeCurrency':{'INR':'EUR'}}}(如入口不好):
{1: {'name12': 'John', 'age': '27', 'sex': 'Male', 'Address': { 'Door': '9-8-11', 'street': 'John-street', 'city': 'NewYork', 'zip':'000000'}, 'ExchangeCurrency':{'AAA':'CCC'}}发布于 2022-09-18 20:03:08
您可能需要考虑的一种方法是为“给定的示例键”(例如名称、年龄、性别和地址)为初始化函数的对象属性和关键字参数为对象属性和关键字参数的每个人创建自己的类。例如,您可以执行以下操作。
class Person(object):
def __init__(self, name = '', age = '0', sex = None, address = {}):
self.name = name
self.age = age
self.sex = sex
self.address = address这样,您就可以在系统中输入person one
person_1 = Person(name = 'John',
age = '27',
sex = 'Male',
address = { 'Door': '9-8-11', 'street': 'John-street', 'city': 'NewYork', 'zip':'99705'})实际上,您可以很好地打开一个人的字典版本来创建这个Person实例。例如,我们可以将您的字典更改为Person对象的字典,如下所示。
people_dic_1 = {1: {'name': 'John', 'age': '27', 'sex': 'Male', 'address': { 'door': '9-8-11', 'street': 'John-street', 'city': 'NewYork', 'zip':'99705'}},
2: {'name': 'Marie', 'age': '22', 'sex': 'Female', 'address': { 'door': '9-8-11', 'street': 'John-street', 'city': 'NewYork', 'zip': '99705'}}}
people_dic_2 = {k:Person(**v) for k,v in people_dic.items()}在上面,Person(**v)是一个person对象,其属性由字典v确定。特别要注意的是,只有当每个键对应于__init__方法的(正确命名)关键字参数时,调用__init__才能工作。
要转到另一个方向,您可以对一个vars对象调用Person来生成您一直在使用的字典。例如,在运行上述代码后调用vars(people_dic_2[2])将生成字典
{'name': 'Marie',
'age': '22',
'sex': 'Female',
'address': {'door': '9-8-11',
'street': 'John-street',
'city': 'NewYork',
'zip': '99705'}}如果您愿意的话,您也可以为地址创建一个类。
https://stackoverflow.com/questions/73765915
复制相似问题