python中for循环的用法items-python - 使用'for'循环迭代字典

使用"for"循环迭代字典

.values

Python如何识别它只需要从中读取密钥   字典? 关键是Python中的一个特殊词吗? 或者只是一个   变量?

这不仅仅是.values循环。 这里重要的一词是“迭代”。

字典是键到值的映射:

d = {"x": 1, "y": 2, "z": 3}

每当我们迭代它时,我们迭代键。 变量名称.values仅用于描述 - 它非常适合此目的。

这发生在列表理解中:

>>> [k for k in d]

["x", "y", "z"]

它发生在我们将字典传递给列表(或任何其他集合类型对象)时:

>>> list(d)

["x", "y", "z"]

Python迭代的方式是,在需要的上下文中,它调用对象的.values方法(在本例中为字典),该方法返回迭代器(在本例中为keyiterator对象):

>>> d.__iter__()

我们不应该自己使用这些特殊方法,而是使用相应的内置函数来调用它,.values:

>>> key_iterator = iter(d)

>>> key_iterator

迭代器有一个.values方法 - 但我们用内置函数.items调用它:

>>> next(key_iterator)

"x"

>>> next(key_iterator)

"y"

>>> next(key_iterator)

"z"

>>> next(key_iterator)

Traceback (most recent call last):

File "", line 1, in

StopIteration

当迭代器耗尽时,它会引发.values.这就是Python知道退出.items循环,列表解析,生成器表达式或任何其他迭代上下文的方式。 一旦迭代器引发StopIteration它将始终引发它 - 如果你想再次迭代,你需要一个新的。

>>> list(key_iterator)

[]

>>> new_key_iterator = iter(d)

>>> list(new_key_iterator)

["x", "y", "z"]

回到dicts

我们已经看到dicts在许多情况下迭代。 我们所看到的是,无论何时我们迭代一个字典,我们都得到了密钥。 回到原始示例:

.values

如果我们更改变量名称,我们仍然会获得密钥。 我们来试试吧:

>>> for each_key in d:

... print(each_key, "=>", d[each_key])

...

x => 1

y => 2

z => 3

如果我们想迭代这些值,我们需要使用.values的dicts方法,或者同时使用.items:

>>> list(d.values())

[1, 2, 3]

>>> list(d.items())

[("x", 1), ("y", 2), ("z", 3)]

在给出的示例中,迭代这样的项目会更有效:

for a_key, corresponding_value in d.items():

print(a_key, corresponding_value)

但是出于学术目的,问题的例子很好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值