代码之家  ›  专栏  ›  技术社区  ›  Vikash Dhiman

在python中动态生成列表和字典。我正在尝试用python创建数组

  •  0
  • Vikash Dhiman  · 技术社区  · 6 年前

    我是Python的新手,在创建动态列表和字典时遇到了问题。

    我想要这样的结果:

    {
    'page1':
        [{'email':
            [{'emailAddress':'abc@gmail.com'}],[{'emailAddress1':'abc@gmail.com1'}],...
        }],[{'url':
            [{'url':'abc.com','cordinates','10,10,100,45'}],[{'url':'abc.com','cordinates','10,10,100,45'}]...
        }]
    }
    {
    'page1':
        [{'email':
            [{'emailAddress':'abc@gmail.com'}],[{'emailAddress1':'abc@gmail.com1'}],...
        }],[{'url':
            [{'url':'abc.com','cordinates','10,10,100,45'}],[{'url':'abc.com','cordinates','10,10,100,45'}]...
        }]
    }
    {
    'page1':
        [{'email':
            [{'emailAddress':'abc@gmail.com'}],[{'emailAddress1':'abc@gmail.com1'}],...
        }],[{'url':
            [{'url':'abc.com','cordinates','10,10,100,45'}],[{'url':'abc.com','cordinates','10,10,100,45'}]...
        }]
    }.....
    

    我无法提供原始数据供您审阅,但我将使用下面的代码创建此类数据:

    from pprint import pprint
    dict1 = {}
    dict2 = {}
    dict3 = {}
    
    newObj = {'name'}
    finalVar = []
    finalVars = []
    newVal = {}
    for i in range(10):
        temp = {'page'+str(i)}
    
        for k in range(10):
            newtemp = {'page'+str(i):{'email':[{
                'emailId':str(i),
                'test':str(k)
            }]}}
            finalVar.append(newtemp)
    
    for i in range(10):
        temp = {'page'+str(i)}
        for k in range(10):
            newtemp = {'page'+str(i):{'email':[{
                'url':str(i),
                'testing':str(k)
            }]}}
            finalVars.append(newtemp)
    
    pprint(finalVars)
    

    我是Python的新手,所以,即使我不知道我正在创建有效的列表和数组字典。所以,如果有什么问题,请道歉。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Abhishek Vijay    6 年前

    从这个问题上,我假设需要一本字典,它的键是 页0,页1 等等,每个键的值是另一个字典,其中键为 电子邮件,网址 价值 电子邮件 听写的数组 {'email': '0@mail.com'} 价值 网址 听写的数组 {'coordinates': [10, 10, 100, 45], 'url': '0.com'} . 下面是一个产生以下输出的示例代码(如上所述)

    {'page0': {'emails': [{'email': '0@mail.com'}, {'email': '1@mail.com'}],
           'urls': [{'coordinates': [10, 10, 100, 45], 'url': '0.com'},
                    {'coordinates': [10, 10, 100, 45], 'url': '1.com'}]},
     'page1': {'emails': [{'email': '0@mail.com'}, {'email': '1@mail.com'}],
           'urls': [{'coordinates': [10, 10, 100, 45], 'url': '0.com'},
                    {'coordinates': [10, 10, 100, 45], 'url': '1.com'}]}}
    

    对应的python代码:

    import pprint
    
    result = {}
    emails_key = "emails"
    urls_key = "urls"
    
    for i in range(2):
        page_key = "page" + str(i) 
        result[page_key] = {emails_key: [], urls_key: []}
        for j in range(2):
            result[page_key][emails_key].append({'email': str(j) + '@mail.com'})
            result[page_key][urls_key].append({'url': str(j) + '.com', 'coordinates': [10,10,100,45]})
    
    pprint.pprint(result)
    

    希望这有帮助。

        2
  •  1
  •   Quaternion    6 年前

    我相信类似于以下代码的东西将生成您想要的数组类型。

    email_entries = []
    for i in range(num_email_entries):
        email_entries.append([{'emailAddress' + str(i)*(i>0):'abc@gmail.com'}])
    email_container = [{'email':tuple(email_entries)}]
    
    url_entries = []
    for i in range(num_url_entries):
        url_entries.append([{'url' + str(i)*(i>0):'abc.com',
                           'coordinates' + str(i)*(i>0):'10,10,100,45'}])
    url_container = [{'url':tuple(url_entries)}]
    
    array = {'page': (email_container,url_container)}
    

    输出时 num_email_entries = num_url_entries = 2

    {'page': 
           ([{'email': 
                      ([{'emailAddress': 'abc@gmail.com'}], 
                       [{'emailAddress1': 'abc@gmail.com'}])
            }],
            [{'url': 
                      ([{'url': 'abc.com', 
                          'coordinates': '10,10,100,45'}], 
                       [{'url1': 'abc.com', 
                          'coordinates1': '10,10,100,45'}])
            }]
           )
    }