迭代字典列表。传递给函数

问题描述 投票:-1回答:2

免责声明。我是python的新手,正尝试学习。我有一个字典列表,其中包含要迭代的地址信息,然后将其作为参数传递给函数。

print(data)

[{'firstName': 'John', 'lastName': 'Smith', 'address': '123 Lane', 'country': 'United States', 'state': 'TX', 'city': 'Springfield', 'zip': '12345'}, {'firstName': 'Mary', 'lastName': 'Smith', 'address': '321 Lanet', 'country': 'United States', 'state': 'Washington', 'city': 'Springfield', 'zip': '54321'}]

我遍历列表,尝试传递值,但是这些值作为列表而不是单独作为列表过去。我不确定如何纠正。我仍在掌握参数和关键字参数。任何帮助和指导表示赞赏。

from usps import USPSApi, Address

input_name = [li['lastName'] for li in data]
input_address = [li['address'] for li in data]
input_city = [li['city'] for li in data]        
input_state = [li['state'] for li in data]        
input_zip = [li['zip'] for li in data]        
input_country = [li['country'] for li in data]  

address = Address(
    name = input_name,
    address_1= input_address,
    city= input_city,
    state=input_state,
    zipcode=input_zip
)
usps = USPSApi('------', test=True)
validation = usps.validate_address(address)
data_results = validation.result 
print(data_results)
python parameter-passing keyword-argument
2个回答
0
投票

您已经具有处理单个数据点的所有逻辑,只需使用循环将其扩展为多个数据点,如下所示。

from usps import USPSApi, Address

for item in data:
    kwargs = dict()

    kwargs['name'] = item['lastName']
    kwargs['address_1'] = item['address']
    kwargs['city'] = item['city']
    kwargs['state'] = item['state']
    kwargs['zipcode'] = item['zip']

    address = Address(**kwargs)

    usps = USPSApi('------', test=True)
    validation = usps.validate_address(address)
    data_results = validation.result 
    print(data_results)

没有语法糖就变成

for item in data:
    kwargs = dict()

    name = item['lastName']
    address_ = item['address']
    city = item['city']
    state = item['state']
    zip_ = item['zip']

    address = Address(
        name=name,
        address_1=address_,
        city=city,
        state=state,
        zipcode=zip_)

0
投票

如果要在变量中获取键的值:

d_data = [{'firstName': 'John', 'lastName': 'Smith', 'address': '123 Lane', 'country': 'United States', 'state': 'TX', 'city': 'Springfield', 'zip': '12345'}, {'firstName': 'Mary', 'lastName': 'Smith', 'address': '321 Lanet', 'country': 'United States', 'state': 'Washington', 'city': 'Springfield', 'zip': '54321'}]


input_name = d_data[0]['lastName']
input_address = d_data[0]['address']
input_city = d_data[0]['city']        
input_state = d_data[0]['state']        
input_zip = d_data[0]['zip']        
input_country = d_data[0]['country']

print(input_name)
print(input_address)
print(input_city)
print(input_zip)
print(input_country)

输出:

John                                                                                                                          
Smith                                                                                                                         
123 Lane                                                                                                                      
Springfield                                                                                                                   
12345                                                                                                                         
United States
© www.soinside.com 2019 - 2024. All rights reserved.