【问题标题】:how to iterate over items in dictionary using while loop?如何使用while循环遍历字典中的项目?
【发布时间】:2021-10-05 19:34:13
【问题描述】:

我知道如何使用 for 循环遍历字典中的项目。但我需要知道如何使用 while 循环遍历字典中的项目。这可能吗?

这就是我用 for 循环尝试的方法。

user_info = {
    "username" : "Hansana123",
    "password" : "1234",
    "user_id" : 3456,
    "reg_date" : "Nov 19"
}


for values,keys in user_info.items():
    print(values, "=", keys)

【问题讨论】:

  • 如果有用请检查是否正确
  • 您可以迭代()项目列表()。您可以 iter() dict.keys() 的视图 - 在任何情况下,您都不会直接迭代 dict。在 keys() 上使用 for 循环(或 items() 如果您需要键 + 值)是要走的路。将其限制在一段时间内....对我来说,这听起来像是基于糟糕的家庭作业的限制...
  • 使用while循环的任何具体原因?通常,当您不知道迭代次数并且应该继续循环直到满足条件时,使用while 循环。我没有看到任何使用while 循环用于iterate 的用例。

标签: python python-3.x loops while-loop


【解决方案1】:

您可以使用 iternextwhile 循环来迭代字典的项目。这几乎for 循环在后台对任何可迭代对象执行迭代的过程相同。

代码:

user_info = {
    "username" : "Hansana123",
    "password" : "1234",
    "user_id" : 3456,
    "reg_date" : "Nov 19"
}

print("Using for loop...")
for key, value in user_info.items():
    print(key, "=", value)

print()

print("Using while loop...")
it_dict = iter(user_info.items())
while key_value := next(it_dict, None):
    print(key_value[0], "=", key_value[1])

输出:

Using for loop...
username = Hansana123
password = 1234
user_id = 3456
reg_date = Nov 19

Using while loop...
username = Hansana123
password = 1234
user_id = 3456
reg_date = Nov 19

【讨论】:

  • “这只是同一个过程”——几乎是同一个过程。 for 循环不会使用 next() 的标记值,而是会捕获 StopIteration
  • 好发现!同意。我会更新答案以避免混淆。谢谢你的评论:)
【解决方案2】:

这不是我所做的完美解决方案,但它在 while 循环中

user_info = {
    "username" : "Hansana123",
    "password" : "1234",
    "user_id" : 3456,
    "reg_date" : "Nov 19"
}

i = 0
length = len(list(user_info.items()))
keys, values = list(user_info.keys()), list(user_info.values())

while i < length:
    print(values[i], "=", keys[i])
    i += 1

【讨论】:

  • 你实际上是在间接地迭代 list ,你不能在不改变数据类型的情况下直接迭代 dict
  • 欢迎来到 Stackoverflow!感谢您发布您的尝试,但这似乎并不能完全回答这个问题。您可能想进一步探索字典数据类型并修改您的答案。
【解决方案3】:

如果访问 while 循环,则不能使用 while 循环对 dict 进行迭代,因为 dict 元素是无序的,并且在 while 循环中,您只能通过索引访问 str 列表元组等可迭代对象,而 dict 没有索引。我希望它能澄清你的问题。

【讨论】:

  • 我还是python的初学者。非常感谢您的帮助...我会找到更多相关信息。 ; )
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-22
  • 2013-02-20
  • 2011-03-18
相关资源
最近更新 更多