首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >限制在python字典中添加坏条目吗?

限制在python字典中添加坏条目吗?
EN

Stack Overflow用户
提问于 2022-09-18 19:39:43
回答 1查看 46关注 0票数 0

我们有示例Python字典,如下所示,可以由项目中的多个开发人员修改。避免开发人员添加除了给定的示例键之外,还可以避免他们在个人地址中添加不正确的zip条目( zip应该通过邮政编码验证,然后允许添加zip)等等的最佳方法。此外,“AAA”的无效密钥也不存在货币,也有无效的值,我认为我们可以使用特殊的函数dict。 add dict。 key 是其他最好的方法。

代码语言:javascript
复制
 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'}}}

(如入口不好):

代码语言:javascript
复制
{1: {'name12': 'John', 'age': '27', 'sex': 'Male', 'Address': { 'Door': '9-8-11', 'street': 'John-street', 'city': 'NewYork', 'zip':'000000'}, 'ExchangeCurrency':{'AAA':'CCC'}}
EN

回答 1

Stack Overflow用户

发布于 2022-09-18 20:03:08

您可能需要考虑的一种方法是为“给定的示例键”(例如名称、年龄、性别和地址)为初始化函数的对象属性和关键字参数为对象属性和关键字参数的每个人创建自己的类。例如,您可以执行以下操作。

代码语言:javascript
复制
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

代码语言:javascript
复制
person_1 = Person(name = 'John', 
                  age = '27', 
                  sex = 'Male', 
                  address = { 'Door': '9-8-11', 'street': 'John-street', 'city': 'NewYork', 'zip':'99705'})

实际上,您可以很好地打开一个人的字典版本来创建这个Person实例。例如,我们可以将您的字典更改为Person对象的字典,如下所示。

代码语言:javascript
复制
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])将生成字典

代码语言:javascript
复制
{'name': 'Marie',
 'age': '22',
 'sex': 'Female',
 'address': {'door': '9-8-11',
  'street': 'John-street',
  'city': 'NewYork',
  'zip': '99705'}}

如果您愿意的话,您也可以为地址创建一个类。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73765915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档