字典迭代——对于 dict 与 dict.items()

2023-12-21

当我们迭代下面的字典时,每次迭代都会(正确地)返回一个键值对

for key, value in dict.items():
    print "%s key has the value %s" % (key, value)

'some key'键有值'some value'(重复多少次,有 k,v 对)

上面的内容对我来说是有道理的,但是如果我们这样做:

for key in dict.items():
    print "%s key has the value %s" % (key, value)

("some key", "some value")有价值"some value"(左边的元组将迭代每个键值对,右边的值将保留在字典中的第一个值并重复)

我们最终得到了第一个返回的每个 k,v 对%s(关键)和第二个%s(value) 不会迭代,它只是为 for 循环的每次迭代返回字典中的第一个值。

我明白如果你只迭代for key in dict那么你只迭代键。因为我们正在迭代一组元组(通过使用dict.items())在 for 循环中只有键的情况下,循环应运行与第一个示例相同的次数,因为键与键值对一样多。

我无法理解的是为什么 python 在第二个示例中为您提供了整个元组key.


感谢大家的帮助——我想再添加一个问题。

for a,a in dict.items():
    print a

为什么上面打印这个值,如果我print a,a- 显然这两个值都被打印两次。如果我输入了for a,b我会迭代(key,value)成对所以我从逻辑上认为我现在正在迭代(key,key)对,因此会打印键而不是值。抱歉,我只是在口译员中提出一些基本问题并试图解决问题。


第一个示例是利用称为“元组解包”的方法将与单独示例中完全相同的元组分解为两个不同的变量。

换句话说:

for key, value in dict.items():

只是这样吗:

for keyvalue in dict.items():
    key, value = keyvalue[0], keyvalue[1]

请记住,一个for循环始终迭代您给它的迭代器的各个元素。dict.items()返回一个类似列表的元组对象,因此每次运行for循环是一个新的元组,自动解包到key, value如果你这样定义它for loop.

这样想可能会有所帮助:

d = {'a':1, 'b':2, 'c':3}
list(d)          # ['a', 'b', 'c']             the keys
list(d.keys())   # ['a', 'b', 'c']             the keys
list(d.values()) # [1, 2, 3]                   the values
list(d.items())  # [('a',1), ('b',2), ('c',3)] a tuple of (key, value)

注意:这是你的代码的唯一原因

for key in dict.items():
    print "%s key has value: %s" % (key, value)

不抛出NameError是因为value已经在代码中的其他地方定义了。既然你没有定义value在那的任何地方for循环,否则会抛出异常。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

字典迭代——对于 dict 与 dict.items() 的相关文章

  • Python 多处理示例不起作用

    我正在尝试学习如何使用multiprocessing但我无法让它发挥作用 这是代码文档 http docs python org 2 library multiprocessing html from multiprocessing imp
  • pandas 替换多个值

    以下是示例数据框 gt gt gt df pd DataFrame a 1 1 1 2 2 b 11 22 33 44 55 gt gt gt df a b 0 1 11 1 1 22 2 1 33 3 2 44 4 3 55 现在我想根据
  • SQL Alchemy 中的 NULL 安全不等式比较?

    目前 我知道如何表达 NULL 安全的唯一方法 SQL Alchemy 中的比较 其中与 NULL 条目的比较计算结果为 True 而不是 NULL 是 or field None field value 有没有办法在 SQL Alchem
  • Python tcl 未正确安装

    我刚刚为 python 安装了graphics py 但是当我尝试运行以下代码时 from graphics import def main win GraphWin My Circle 100 100 c Circle Point 50
  • 如何使用装饰器禁用某些功能的中间件?

    我想模仿的行为csrf exempt see here https docs djangoproject com en 1 11 ref csrf django views decorators csrf csrf exempt and h
  • 运行多个 scrapy 蜘蛛的正确方法

    我只是尝试使用在同一进程中运行多个蜘蛛新的 scrapy 文档 http doc scrapy org en 1 0 topics practices html但我得到 AttributeError CrawlerProcess objec
  • 从列表中的数据框列中搜索部分字符串匹配 - Pandas - Python

    我有一个清单 things A1 B2 C3 我有一个 pandas 数据框 其中有一列包含用分号分隔的值 某些行将包含与上面列表中的一项的匹配 它不会是完美的匹配 因为它在其中包含字符串的其他部分 该列 例如 该列中的一行可能有 哇 这里
  • Python 中的二进制缓冲区

    在Python中你可以使用StringIO https docs python org library struct html用于字符数据的类似文件的缓冲区 内存映射文件 https docs python org library mmap
  • NameError:名称“urllib”未定义”

    CODE import networkx as net from urllib request import urlopen def read lj friends g name fetch the friend list from Liv
  • feedparser 在脚本运行期间失败,但无法在交互式 python 控制台中重现

    当我运行 eclipse 或在 iPython 中运行脚本时 它失败了 ascii codec can t decode byte 0xe2 in position 32 ordinal not in range 128 我不知道为什么 但
  • python pandas 中的双端队列

    我正在使用Python的deque 实现一个简单的循环缓冲区 from collections import deque import numpy as np test sequence np array range 100 2 resha
  • Python - 按月对日期进行分组

    这是一个简单的问题 起初我认为很简单而忽略了它 一个小时过去了 我不太确定 所以 我有一个Python列表datetime对象 我想用图表来表示它们 x 值是年份和月份 y 值是此列表中本月发生的日期对象的数量 也许一个例子可以更好地证明这
  • Python - 在窗口最小化或隐藏时使用 pywinauto 控制窗口

    我正在尝试做的事情 我正在尝试使用 pywinauto 在 python 中创建一个脚本 以在后台自动安装 notepad 隐藏或最小化 notepad 只是一个示例 因为我将编辑它以与其他软件一起使用 Problem 问题是我想在安装程序
  • Numpy 优化

    我有一个根据条件分配值的函数 我的数据集大小通常在 30 50k 范围内 我不确定这是否是使用 numpy 的正确方法 但是当数字超过 5k 时 它会变得非常慢 有没有更好的方法让它更快 import numpy as np N 5000
  • 在Python中重置生成器对象

    我有一个由多个yield 返回的生成器对象 准备调用该生成器是相当耗时的操作 这就是为什么我想多次重复使用生成器 y FunctionWithYield for x in y print x here must be something t
  • Python:计算字典的重复值

    我有一本字典如下 dictA unit1 test1 alpha unit1 test2 beta unit2 test1 alpha unit2 test2 gamma unit3 test1 delta unit3 test2 gamm
  • 协方差矩阵的对角元素不是 1 pandas/numpy

    我有以下数据框 A B 0 1 5 1 2 6 2 3 7 3 4 8 我想计算协方差 a df iloc 0 values b df iloc 1 values 使用 numpy 作为 cov numpy cov a b I get ar
  • Spark.read 在 Databricks 中给出 KrbException

    我正在尝试从 databricks 笔记本连接到 SQL 数据库 以下是我的代码 jdbcDF spark read format com microsoft sqlserver jdbc spark option url jdbc sql
  • Python:元类属性有时会覆盖类属性?

    下面代码的结果让我感到困惑 class MyClass type property def a self return 1 class MyObject object metaclass MyClass a 2 print MyObject
  • Pandas 与 Numpy 数据帧

    看这几行代码 df2 df copy df2 1 df 1 df 1 values 1 df2 ix 0 0 我们的教练说我们需要使用 values属性来访问底层的 numpy 数组 否则我们的代码将无法工作 我知道 pandas Data

随机推荐

  • 用于返回合格子节点值的字符串串联的 XPath

    任何人都可以建议一种 XPath 表达式格式 该格式返回一个字符串值 其中包含元素的某些合格子节点的串联值 但忽略其他值 div This text node should be returned em And the value of t
  • UIGestureRecognizer 导致循环保留?

    我在想 如果你将目标指定为self在手势识别器中initWithTarget action 方法 会引起循环retain吗 自从self将保留识别器self gestureRecognizers并且手势识别器也有可能将自身保留在initWi
  • 在类方法中使用 self

    我在 ShareKit 中遇到了这段代码 我不明白作者的想法 使用self在类方法中 有警告 不兼容的指针类型将 Class 发送到参数类型id
  • 用户在权限屏幕上单击“允许”后启动活动

    我的一项活动需要位置许可 我编写了下面的代码来获得许可 但在这种情况下 如果应用程序最初没有位置权限 则用户需要单击两次才能打开活动 我可以进行一些更改 以便一旦用户在 权限 屏幕上单击 允许 只有然后意图才会触发 int PERMISSI
  • 我无法将信息从表单输入到数据库[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 询问代码的问题必须对所解决的问题表现出最低限度的了解 包括尝试的解决方案 为什么它们不起作用以及预期结果 也可以看看 Stack Over
  • 如何检查 keras 训练是否已经在 GPU 中运行?

    有时我会犯一个错误 尝试在同一个 GPU 两个不同的脚本 中使用 keras 同时运行两个训练 导致我的机器崩溃或破坏两个训练 我希望能够在我的脚本中测试是否有一些训练正在运行 因此可以更改 GPU 或停止新的训练 我发现寻找答案的唯一提示
  • 无法在 vba IE 中应用正则表达式

    我使用vba结合IE编写了一个脚本来解析应用程序网页中的联系信息regex在上面 我进行了很多搜索 但找不到任何可以满足我的要求的示例 这pattern可能并不理想地找到phone号 但这里主要关心的是我如何使用pattern在 vba I
  • 在 C# 中解析原始 Protocol Buffer 字节流

    给定一个协议缓冲区编码Stream or byte 但不知道对象类型本身 我们如何打印消息的骨架 该用例用于调试基于 protobuf 的 IO 以进行根本原因分析 如果有现有的工具可以从二进制文件中解析原始 Protocol Buffer
  • 如何滚动到英国底部?

    我使用 PhoneGap 开发了一款应用程序 在我的应用程序中 我使用在列表视图中显示了许多元素ui li 这里我想滚动到列表中的最后一个元素 为此 我使用了以下代码 dates li last addClass active li foc
  • ScriptManager.RegisterClientScriptIninclude 在 UpdatePanel 中不起作用

    我已浏览网络 但尚未找到以下问题的解决方案 我有这个示例页面 ScriptManager aspx ScriptManager an UpdatePanel a MultiView有两个Views和两个LinkButtons两个视图之间切换
  • 如何在build.gradle中指定Android应用程序支持的架构?

    我的Android应用程序仅支持arm64 v8a和armeabi v7a 但是 由于依赖项之一 我在 apk 的 lib 文件夹中看到以下内容 arm64 v8a armeabi armeabi v7a mips x86 x86 64 这
  • NSURLSession用于网络图片下载+缓存

    有许多第三方库用于加载网络图像 然后将其存储到磁盘和 或内存中 然而它是好简单使用简单的 NSURLSession API 调用来实现它 这是代码 NSURLCache myCache NSURLCache alloc initWithMe
  • Haskell 中如何实现列表推导式?

    列表推导式只是一种语言功能吗 使用纯 Haskell 伪造列表理解的最简单方法是什么 你必须使用 do 块 gt gt 来做到这一点或者你可以使用其他一些 将列表理解结合在一起的方法 澄清 伪造 列表理解是指创建一个接受相同输入并产生相同输
  • 服务器日志在 POST 请求之前显示 GET 请求

    当我查看服务器日志时 我看到定期 GET 请求在来自同一 IP 具有相同引荐来源网址的 POST 请求之前立即传入 我期望的是 POST 但不是 GET 有没有人见过这个 我正在使用 javascript 在 iframe 内动态创建一个表
  • ConvertTo-Csv 输出不带引号

    我在用ConvertTo Csv获取逗号分隔的输出 get process convertto csv NoTypeInformation Delimiter 它的输出如下 NounName Name Handles VM WS 但是我想获
  • 通过赋值启动子 shell 并等待

    如何通过分配变量来启动一些子shell并等待所有完成 bin bash some code about FILE 1 cat FILE while read r HOST n HOST do echo HOST URL http HOST
  • setInterval延迟不准确

    我目前正在使用 setInterval 创建倒计时 尽管目前它的运行速度比应有的慢 根据MDN https developer mozilla org en docs Web API window setInterval 延迟参数以毫秒为单
  • 无法使用 smack 连接 XMPP 服务器:实施基于 GCM XMPP 的应用程序服务器时出现 EOF 异常

    java io EOFException no more data available expected end tag to close start tag
  • 从图像中删除白色背景并使其透明

    我们正在尝试在 Mathematica 中执行以下操作 RMagick 从图像中删除白色背景并使其透明 https stackoverflow com questions 7738437 但对于实际照片来说 它最终看起来很糟糕 就像图像周围
  • 字典迭代——对于 dict 与 dict.items()

    当我们迭代下面的字典时 每次迭代都会 正确地 返回一个键值对 for key value in dict items print s key has the value s key value some key 键有值 some value