我有一个我正在尝试循环的函数,目的是在它们之后用", "
修改这些变量。
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
是否为空,如果不为空,则在函数继续之前使用", "
修改该值。
答案 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()
之间的差异。如果他们很无聊)。