python - 为什么输出不显示 k1、k2、k3?

标签 python

我一直在尝试学习 Python 并遇到了这个问题。我无法弄清楚当前输出是如何产生的。

d={'k1':1,'k2':2,'k3':3}
for key,value in d.keys() :
    print(key)

Output:

k
k
k

我期望输出是:

k1
k2
k3

最佳答案

您正在尝试打印字典 d 中的所有键值对。但是当您尝试打印 key 时,您只能看到 key 的第一个字符。我将通过拆分 for 循环 for key,value in d.keys() 来向您解释。

这是你的字典,d

d = {'k1':1,'k2':2,'k3':3}

for 循环采用d.keys() 并进行迭代。 d.keys() 看起来像这样

print(d.keys()) # outputs dict_keys(['k1', 'k2', 'k3'])

for 循环遍历此键列表 ['k1', 'k2', 'k3']

但是当你这样做的时候,这

key,value = 'k1' # this happens with each of the keys in the list 
print(key,value) # output k 1

您的 key k1 被拆分为两个单字符串 k1 这可以称为 无意的元组创建 @inquisitiveOne并分别分配给 keyvalue 变量。

当您尝试在 for 循环中打印 value 时,您会看到 1, 2, 3 但实际上是第二个key 属性的字符,而不是 value 属性的字符。如果你尝试打印,print(type(value)) 你会知道它实际上是一个 string 变量而不是 integer .


要获得 key 的正确值,您只需要使用一个变量。

d={'k1':1,'k2':2,'k3':3}
for key in d.keys():
    print(key)

输出:

k1
k2
k3

@asikorski 所述您可以使用 for key in d: print(key)

实现相同的效果

如果需要获取键值对。然后使用d.items()

for key,value in d.items():
    print(key,value)

输出:

k1 1
k2 2
k3 3

希望对您有所帮助!

关于python - 为什么输出不显示 k1、k2、k3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57232777/

相关文章:

python - 在 Python 中实现传输层安全 - 简单的邮件客户端

python - numpy vstack 空初始化

python - 想要确认 Python itertools.islice 中 islice 这个名字的含义

python - 我应该嵌入或扩展 python 来创建高质量、高速的 GUI 程序吗?

python - os.path.normpath 和符号链接(symbolic link)

python - 嘿伙计们我在这段代码中做错了什么。我试图将 13195 的所有质因数附加到一个空列表中,但它给了我一个空列表

python - 对多个 y 轴进行绘图和颜色编码

Python与Sqlite 3,如何仅提取文本,不带'u?

python - Python 中的信号处理程序和日志记录

Python 字符串的数值排序