Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 具有嵌套字典的条件_Python_Python 3.x_Dictionary - Fatal编程技术网

Python 具有嵌套字典的条件

Python 具有嵌套字典的条件,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,鉴于以下数据: diccionario_datos_clientes = [ {"Name": "Marcos", "Age": 23, "Ranking": 14, "Contact":{ "Work": 99000001, "Personal": 7222003}}, {"Name": "Hugo"

鉴于以下数据:

diccionario_datos_clientes = [
    {"Name": "Marcos", "Age": 23, "Ranking": 14, "Contact":{ "Work": 99000001, "Personal": 7222003}},
    {"Name": "Hugo", "Age": 26, "Ranking": 83, "Contact": { "Work": 99000002, "Personal": 97220042}},
    {"Name": "Manuel", "Age": 13, "Ranking": 2, "Contact": { "Work": 99000003, "Personal": 47220003}},
    {"Name": "Maria", "Age": 66, "Ranking": 7, "Contact": { "Work": 99000004, "Personal": 47220004}},
    {"Name": "Itziar", "Age": 20, "Ranking": 23, "Contact": { "Work": 99000005, "Personal": 47220005}}
]
我得看看个人联系是否有效。条件如下:

数字必须至少有8位数字 第一个数字必须是4 位置4、5、6中的数字必须为0。 如果号码无效,我应该将姓名和工作联系人添加到列表中

我能做到前两个条件,但第三个条件有问题

    dic_llamar=[]
    for dic in diccionario_datos_clientes:
        if len(str(dic['Contact']['Personal']))<8:
            dic_llamar.append((dic['Name'],dic['Contact']['Work']))
        elif int(str(dic['Contact']['Personal'])[0])!=4:
            dic_llamar.append((dic['Name'],dic['Contact']['Work']))

如果有什么不清楚,请立即询问

我相信这将有助于您解决问题,我将说明在if中需要满足的所有三个条件:


因此,如果所有条件都满足,您将获得有效联系人,否则将获得无效联系人。当然,您可以根据自己的最佳需要修改此选项。

我相信这将有助于您解决问题,我将在if中说明需要满足的所有三个条件:

因此,如果所有条件都满足,您将获得有效联系人,否则将获得无效联系人。当然,您可以修改此选项以满足您的最佳需要。

最后一个条件是

 if str(dic['Contact']['Personal'])[4:7] == '000':
另一方面,如果您仅在以下情况下使用一个,则会更好:

condiction1 = len(str(dic['Contact']['Personal'])) == 8
condiction2 = str(dic['Contact']['Personal'])[0] == '4'
condiction3 = str(dic['Contact']['Personal'])[4:7] == '000'
if not (condiction1 or condiction2 or condiction3):
     append(...)
最后一个条件是

 if str(dic['Contact']['Personal'])[4:7] == '000':
另一方面,如果您仅在以下情况下使用一个,则会更好:

condiction1 = len(str(dic['Contact']['Personal'])) == 8
condiction2 = str(dic['Contact']['Personal'])[0] == '4'
condiction3 = str(dic['Contact']['Personal'])[4:7] == '000'
if not (condiction1 or condiction2 or condiction3):
     append(...)

我认为最好将其提取到自己的函数中

def isValid(number):
    """take a number and said if is a valid contact number"""
    s = str(number)
    return len(s)>=8 and s[0]=="4" and s[4:7]=="000"
我不明白为什么另一个会重复这么多次

通过将它放入自己的功能中,更容易检查它是否工作,因为它可以单独测试,并且如果需要,可以更容易地在项目的其他部分中使用

像这样使用它

for dic in diccionario_datos_clientes:
    if isValid(dic['Contact']['Personal']):
        #do something
    else: 
        #do something else

而且更干净、更漂亮

我认为最好将其提取到自己的函数中

def isValid(number):
    """take a number and said if is a valid contact number"""
    s = str(number)
    return len(s)>=8 and s[0]=="4" and s[4:7]=="000"
我不明白为什么另一个会重复这么多次

通过将它放入自己的功能中,更容易检查它是否工作,因为它可以单独测试,并且如果需要,可以更容易地在项目的其他部分中使用

像这样使用它

for dic in diccionario_datos_clientes:
    if isValid(dic['Contact']['Personal']):
        #do something
    else: 
        #do something else

而且更干净、更漂亮

第三个是:strdic['Contact']['Personal'][4:7]=='000',而且,对于一个有效的联系人,它是否同时满足所有条件?@CeliusStingher让我试试,我会回到u!是的,如果它有效,它应该同时满足3个条件。@CeliusStingher它起作用了!所以谢谢你!没问题!请随时检查我的答案,如果它有助于您解决问题,请接受它!:第三个是:strdic['Contact']['Personal'][4:7]=='000',而且,为了使一个联系人有效,它应该同时满足所有条件吗?@CeliusStingher让我试试,我会回到u!是的,如果它有效,它应该同时满足3个条件。@CeliusStingher它起作用了!所以谢谢你!没问题!请随时检查我的答案,如果它有助于您解决问题,请接受它!:太好了!谢谢你的帮助!有什么理由重复这么多次吗?你愿意定义一个变量并对其求值吗?在你的代码中,它是strdic['Contact']['Personal']好的,如果我们挑剔你使用的是&哪一个是位运算符,你应该使用哪一个,哪一个是逻辑运算符,哪一个也是短路,这太完美了!谢谢你的帮助!有什么理由重复这么多次吗?你愿意定义一个变量并对其求值吗?在你的代码中,它是strdic['Contact']['Personal']好的,如果我们挑剔你使用的是&哪一个是位运算符,你应该使用哪一个是逻辑运算符,哪一个也是短路完美的!我马上修好!完美的我马上修好!