关于python 3.x:遍历函数的每个键及其值

Iterate through each key and it's value, of a function

本问题已经有最佳答案,请猛点这里访问。

我有一个函数,我试图循环通过,目的是用后面的","来修改这些变量。

1
2
3
4
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)

这…是一种工作,但不是真的。虽然它为我提供了该def中所有值的正确读数,但它只显示该键的state。我知道为什么,因为我在第一个键中循环遍历所有值,然后再转到第二个键。

我想要的是一个循环,可以产生,比如:

1
2
3
4
5
6
7
address 123 My Address
city
state_province Illinois
country USA
postal_code 12345
contact McGruff
state Illinois

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

1
2
3
4
for key in locals().keys():
    print (key)
for value in locals().values():
    print (value)

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

也不

1
2
for key in locals().keys():
    print (key, locals().values())

我想我快接近了,但就是拿不到!感谢您的建议/建议。

最后一点:我需要这样做,我可以看到value是否不为空,如果不为空,在函数继续之前用","修改值。


您可以循环使用这些键,并使用.get方法打印出键和键的值。

1
2
for key in locals().keys():
    print(key, locals().get(key))

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

1
2
for key in locals().keys():
    print(key, locals()[key])

最后,您还可以使用字典的.items()。(用于python 2.x的.iteritems())

1
2
for key, value in locals().items():
    print(key, value)

确保在使用这些变量之前实例化keyvalue。否则,您将在迭代时更改locals()中的项,并将得到一个错误。


虽然@victorc的for key, value in locals().items()起作用,但我发现这也起作用:

1
2
for key, value in zip(locals().keys(), locals().values()):
    print (key, value)

(只是记录在案。我仍然在学习python,所以我很愿意有人评论zip()和循环通过items()的区别,如果他们感到无聊的话)。