迭代函数的每个键及其值

Bru*_*yne 5 python-3.x

我有一个正在尝试循环的函数,目的是在这些变量", "后面加上 a 来修改这些变量。

def create_merge(address, city, state_province, country, postal_code, contact, state):
    for key in locals().keys():
        for value in locals().values():
            print(key, value)
Run Code Online (Sandbox Code Playgroud)

这......有点管用,但不是真的。虽然它为我提供了该定义中所有值的正确读数,但它仅显示state键。我明白为什么,因为我在第一个键移动到第二个键之前循环遍历第一个键中的所有值。

我想要的是一个能够产生如下结果的循环:

address 123 My Address
city 
state_province Illinois
country USA
postal_code 12345
contact McGruff
state Illinois
Run Code Online (Sandbox Code Playgroud)

显然,这只是首先列出键,然后列出值。如何一次执行一个键和一个值?

for key in locals().keys():
    print (key)
for value in locals().values():
    print (value)
Run Code Online (Sandbox Code Playgroud)

...print (key, key.values())不起作用。

也不

for key in locals().keys():
    print (key, locals().values())
Run Code Online (Sandbox Code Playgroud)

我想我已经很接近了,但就是无法得到它!感谢您的任何建议/意见。

最后注意:我需要以一种可以查看 是否不为空的方式来执行此操作,如果不为空,则在函数继续之前value修改该值。", "

vic*_*tor 2

您可以使用该方法循环遍历键并打印出键和键的值.get

for key in locals().keys():
    print(key, locals().get(key))
Run Code Online (Sandbox Code Playgroud)

或者,您可以仅使用索引来获取值。

for key in locals().keys():
    print(key, locals()[key])
Run Code Online (Sandbox Code Playgroud)

最后,您还可以使用.items()词典。(.iteritems()对于 Python 2.x)

for key, value in locals().items():
    print(key, value)
Run Code Online (Sandbox Code Playgroud)

确保在使用这些变量之前key实例化。value否则,您将在迭代时更改里面的项目locals(),并且会收到错误。