【问题标题】:For loop and dictionaries [duplicate]For循环和字典[重复]
【发布时间】:2023-03-20 08:18:01
【问题描述】:

在 Python 3.x 中,我理解默认情况下,如果我们遍历字典,循环变量会在每次迭代时被分配键的值。 因此:

for loopvar_1 in {'a':1,'b':2,'c':3}:
 print(loopvar_1)

结果

a
b
c

将键分配给循环变量而不是与该键关联的实际值(在本例中为数字 1、2 和 3)有什么好处。

所以根据我上面的问题,如果我们每次都需要引用键,我们如何在不使用任何函数或方法的情况下迭代值?

【问题讨论】:

  • 键将是唯一的,可用于查找关联的值。如果它返回的值(可能都是相同的) - 您将无法将其绑定回键...
  • 请不要回滚合法的编辑 - 如果您有多个问题,请分别提出。
  • 如果你想要这些值,不难做到:for key, val in {'a':1, 'b':2, 'c':3}.items()
  • 是的,因为这会返回键和关联的值,而这些值又可以被分配
  • @jonrsharpe 我回滚了编辑,因此我可以特别避免任何详细说明任何方法和功能的回复,因为我曾预料到会发生这种情况-_-

标签: python python-3.x dictionary key


【解决方案1】:

这在PEP-234 中进行了讨论,它定义了dictionary iterators 的行为(强调我的):

关于是否可以的讨论已经很久了

for x in dict: ...

应该分配 x 的连续键、值或项目 字典。 if x in yx in y 之间的对称性表明 它应该迭代键。 这种对称性已被观察到 许多独立的,甚至被用来“解释”一个使用 其他。这是因为对于序列,if x in y 迭代 y 将迭代值与 x 进行比较。如果我们采用以上两种方式 提案,这也适用于字典。

【讨论】:

  • 当然,这假设您同意in 应该测试x 是否是键,而不是值。
  • @chepner 大概在 PEP 时就已经是这样了。此外,在哈希表中查找键比查找值更有效。
【解决方案2】:

取出所有关联值的一种方法是使用默认方法来引用关联值,并在 for 循环中执行此操作,以便每次更改用于调用关联值的键。

mnm={'a':1,'b':2,'c':3}
for z in mnm:
    print(mnm[z])

PS:这是我在提问时也想知道的,不幸的是“不使用方法或函数”的部分被删掉了,因为无关紧要。

【讨论】:

  • 问“为什么 python 会这样?”之间有很大的不同。并问“我怎样才能在 python 中做到这一点?”
  • 是的,我不会否认,我的错。我刚开始,在措辞上遇到了一些问题。
  • 在这一点上我什至不知道我不知道什么,所以我的问题和我所做的改变有时变得有些荒谬
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-26
  • 1970-01-01
  • 2015-07-28
  • 2017-07-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多