迭代函数

时间:2017-06-22 21:14:22

标签: python-3.x

我有一个我正在尝试循环的函数,目的是在它们之后用", "修改这些变量。

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。我明白了,因为我在第一个键中循环遍历所有值,然后才移到第二个键。

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

address 123 My Address
city 
state_province Illinois
country USA
postal_code 12345
contact McGruff
state Illinois

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

for key in locals().keys():
    print (key)
for value in locals().values():
    print (value)

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

Nor

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

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

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

2 个答案:

答案 0 :(得分:1)

您可以使用.get方法循环键并打印键和键值。

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

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

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

最后,您还可以使用.items()词典。 ({2.}} for Python 2.x)

.iteritems()

确保在使用这些变量之前实例化for key, value in locals().items(): print(key, value) key。否则,您将在迭代时更改value内的项目,您将收到错误。

答案 1 :(得分:0)

虽然@ VictorC' for key, value in locals().items()工作,但我发现这也是如此:

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

(请注意这里的记录。我还在学习python,所以我非常愿意评论zip()items()之间的差异。如果他们很无聊)。