python 中 for 循环模式下字典键值的矛盾输出
Contradictory outputs in dictionary key value in for-loop mode in python
要理解收缩(在结尾段落中)首先你需要用鹰眼仔细观察这四种情况:
(如果发现任何愚蠢的错误请忽略,了解问题的内容)
第一名:
r={'A':'aa','B':'bb','C':'cc'}
print(r[A])#this gives error as "A" in not inside Quotation marks
第二名:
r={'A':'aa','B':'bb','C':'cc'}
print(r['A']) #now there is no error in output result
第三:
r={'A':'aa','B':'bb','C':'cc'}
for xyz in r:
print(r[A]) # again there will be error in output result
# because "A" is not inside quotation marks.
第四名:
r={'A':'aa','B':'bb','C':'cc'}
for xyz in r:
print(r['A']) #not no error will be there as "A" is inside
#quotation marks
矛盾从这里开始循环
第五名:
r={'A':'aa','B':'bb','C':'cc'}
for xyz in r:
print(xyz) #output result come as A C B with no quotation
mark, you can check to see
第六名:
r={'A':'aa','B':'bb','C':'cc'}
for xyz in r:
print(r[A]) # shows error in output as "A" is not inside
# quotation marks
第七名:
r={'A':'aa','B':'bb','C':'cc'}
for xyz in r:
print(r['A']) #result comes out successfully as aa aa aa with new
line inbetween
第八名:
r={'A':'aa','B':'bb','C':'cc'}
for xyz in r:
print(r['xyz']) #result should come successfully as r['xyz'] means
r['A'] or r['B'] or r['C'] in the loop
#but it shows error which by omitting the quotation
mark of xyz show the result successful as shown in
9th scenario
第九名:
r={'A':'aa','B':'bb','C':'cc'}
for xyz in r:
print(r[xyz]) #output result comes successfully as aa cc bb
(check to see)
自相矛盾:在第9种情况下,字面意思是print(r[xyz]),xyz两边没有引号,意思是print(r[A]) or print(r[B]) or print(r[C]) 表示成功输出结果,而在第 8 种情况下 print(r['xyz']) 在其输出结果中显示错误。
现在这是矛盾的:
print(r[A]) 显示的第一个场景、第三个场景和第六个场景
错误,因为 "A" 不在引号内,引号在...
场景二、场景四、场景七将"A"放入
引号给出结果成功。
现在我的问题是引号还是不带引号??是有一个通用规则还是不止一个规则??
xyz
是对象的名称(或标签)。循环将名称 xyz
指向字典中的每个键。所以用xyz
作为key就可以了,因为它的值其实是'A'
,然后是'B'
,然后是'C'
.
'xyz'
是用作字典键的字符串。
字典没有键 'xyz'
所以失败了。
A
是一个未绑定的名称。它没有被定义为指向任何对象。当你说 r[A]
时,口译员不知道你在说什么。它知道名字 r
是什么;它指向一个字典对象。但是 A
是未知的。
'A'
是一个字符串。字典中有键 'A'
,因此匹配且不会失败。
编辑:
在你说的问题中:
r['xyz']
means r['A']
or r['B']
or r['C']
in the loop
这不是真的。
每循环一次,r['xyz']
表示r['xyz']
。
这对字典说:
"do you have a key with value 'xyz'
?
字典查看它的键,即 'A'
、'B'
和 'C'
,然后说:
"no, there is no key 'xyz'
"
第 9 和第 8 种情况与之前的 ones.In python 不矛盾,当您声明如下的 for 语句时
mylist = ["a", "b", "c"]
for each in mylist:
print(each)
在这条语句中print语句执行了3次。首先 each
等于 a
。第二个等于 b
,第三个等于 c
。所以在 for 循环中 for
之后的词等于列表中的元素。
当你尝试执行
for each in mylist:
print(a)
它不会工作,因为您正试图打印一个不存在的变量 a
。在你的例子中,当你写 xyz
时,你让它等于字典中的键,这样你就可以写 print(r[xyz])
.
在第 8 种情况下,您正在尝试获取与键 xyz
关联的值。由于您没有密钥 xyz
您的代码失败。
在你的第 5 个场景中,你的 print(xyz) returns A 和 B 以及 C.If 你尝试打印类似 "Hello World" 的东西,它会写 Hello World 而不是 "Hello World" .它写了 Hello World" 的事实不会改变 print 有参数 "Hello World".
的事实
为了进一步了解,您可以对此进行测试。
for each in mylist:
if each=="a":
print(each)
这将打印一次证明每个都等于 "a" 而不是 a.One 更多示例来澄清事情。
你写道,当你打印 xyz 时,你得到了 A 结果,所以 "xyz" 应该是 "A"。这是 wrong.When 你在 " " 里面写了一些东西,这意味着它们将是一个字符串,它们如果他们有 one.Test this.
则不会调用他们的值
val=3
if "val"=="3":
print ("something")
这不会打印一些东西,因为 "val" 等于 "val" 而不是“3”
结论:当你写print(r[xyz])时,它并不意味着print(r[A])。它意味着print(r["A"])
让我们把它分成几个阶段,看看是否有帮助。我假设你很高兴 for
循环 for xyz in r:
相当于做:
xyz = 'A'
# Do the contents of the loop
xyz = 'B'
# Do the contents of the loop
xyz = 'C'
# Do the contents of the loop
所以为了让例子更简单,我们可以看这个案例:
r = {'A':'aa', 'B':'bb', 'C':'cc'}
xyz = 'A'
现在,如果我们这样做:
print(r[xyz])
这有几件事。
xyz
不在引号中,因此 Python 将其视为某物的标签(或 'name')
xyz
确实是个标签!它是一个包含值 'A'
的变量,一个字符串。
- Python 交换
xyz
的 value,所以我们现在要执行的打印语句看起来像 print(r['A'])
- Python 检查字符串
'A'
是否是字典 r
中的关键字。是!
- 键
'A'
的条目值为 'aa'
,也是一个字符串,因此打印语句现在如下所示:print('aa')
。没有其他可查找的内容,所以这就是 python 执行的内容。
如果我们尝试这样做:
print(r['xyz'])
'xyx'
是一个文字字符串,因此 python 会尝试查看 r
中是否有具有键 'xyz'
的条目
r
中没有名为'xyz'
的键,所以python显示错误
下一个:
print(r[A])
A
不在引号中,因此 Python 将其视为某物的标签
- 程序中不存在名为
A
的标签,因此 Python 无法查找它的值!
- Python 显示错误,因为它无法查找
A
的值
希望这能消除报价差异。
要理解收缩(在结尾段落中)首先你需要用鹰眼仔细观察这四种情况:
(如果发现任何愚蠢的错误请忽略,了解问题的内容)
第一名:
r={'A':'aa','B':'bb','C':'cc'}
print(r[A])#this gives error as "A" in not inside Quotation marks
第二名:
r={'A':'aa','B':'bb','C':'cc'}
print(r['A']) #now there is no error in output result
第三:
r={'A':'aa','B':'bb','C':'cc'}
for xyz in r:
print(r[A]) # again there will be error in output result
# because "A" is not inside quotation marks.
第四名:
r={'A':'aa','B':'bb','C':'cc'}
for xyz in r:
print(r['A']) #not no error will be there as "A" is inside
#quotation marks
矛盾从这里开始循环
第五名:
r={'A':'aa','B':'bb','C':'cc'}
for xyz in r:
print(xyz) #output result come as A C B with no quotation
mark, you can check to see
第六名:
r={'A':'aa','B':'bb','C':'cc'}
for xyz in r:
print(r[A]) # shows error in output as "A" is not inside
# quotation marks
第七名:
r={'A':'aa','B':'bb','C':'cc'}
for xyz in r:
print(r['A']) #result comes out successfully as aa aa aa with new
line inbetween
第八名:
r={'A':'aa','B':'bb','C':'cc'}
for xyz in r:
print(r['xyz']) #result should come successfully as r['xyz'] means
r['A'] or r['B'] or r['C'] in the loop
#but it shows error which by omitting the quotation
mark of xyz show the result successful as shown in
9th scenario
第九名:
r={'A':'aa','B':'bb','C':'cc'}
for xyz in r:
print(r[xyz]) #output result comes successfully as aa cc bb
(check to see)
自相矛盾:在第9种情况下,字面意思是print(r[xyz]),xyz两边没有引号,意思是print(r[A]) or print(r[B]) or print(r[C]) 表示成功输出结果,而在第 8 种情况下 print(r['xyz']) 在其输出结果中显示错误。 现在这是矛盾的:
print(r[A]) 显示的第一个场景、第三个场景和第六个场景
错误,因为 "A" 不在引号内,引号在...场景二、场景四、场景七将"A"放入
引号给出结果成功。
现在我的问题是引号还是不带引号??是有一个通用规则还是不止一个规则??
xyz
是对象的名称(或标签)。循环将名称 xyz
指向字典中的每个键。所以用xyz
作为key就可以了,因为它的值其实是'A'
,然后是'B'
,然后是'C'
.
'xyz'
是用作字典键的字符串。
字典没有键 'xyz'
所以失败了。
A
是一个未绑定的名称。它没有被定义为指向任何对象。当你说 r[A]
时,口译员不知道你在说什么。它知道名字 r
是什么;它指向一个字典对象。但是 A
是未知的。
'A'
是一个字符串。字典中有键 'A'
,因此匹配且不会失败。
编辑:
在你说的问题中:
r['xyz']
meansr['A']
orr['B']
orr['C']
in the loop
这不是真的。
每循环一次,r['xyz']
表示r['xyz']
。
这对字典说:
"do you have a key with value
'xyz'
?
字典查看它的键,即 'A'
、'B'
和 'C'
,然后说:
"no, there is no key
'xyz'
"
第 9 和第 8 种情况与之前的 ones.In python 不矛盾,当您声明如下的 for 语句时
mylist = ["a", "b", "c"]
for each in mylist:
print(each)
在这条语句中print语句执行了3次。首先 each
等于 a
。第二个等于 b
,第三个等于 c
。所以在 for 循环中 for
之后的词等于列表中的元素。
当你尝试执行
for each in mylist:
print(a)
它不会工作,因为您正试图打印一个不存在的变量 a
。在你的例子中,当你写 xyz
时,你让它等于字典中的键,这样你就可以写 print(r[xyz])
.
在第 8 种情况下,您正在尝试获取与键 xyz
关联的值。由于您没有密钥 xyz
您的代码失败。
在你的第 5 个场景中,你的 print(xyz) returns A 和 B 以及 C.If 你尝试打印类似 "Hello World" 的东西,它会写 Hello World 而不是 "Hello World" .它写了 Hello World" 的事实不会改变 print 有参数 "Hello World".
的事实为了进一步了解,您可以对此进行测试。
for each in mylist:
if each=="a":
print(each)
这将打印一次证明每个都等于 "a" 而不是 a.One 更多示例来澄清事情。 你写道,当你打印 xyz 时,你得到了 A 结果,所以 "xyz" 应该是 "A"。这是 wrong.When 你在 " " 里面写了一些东西,这意味着它们将是一个字符串,它们如果他们有 one.Test this.
则不会调用他们的值val=3
if "val"=="3":
print ("something")
这不会打印一些东西,因为 "val" 等于 "val" 而不是“3”
结论:当你写print(r[xyz])时,它并不意味着print(r[A])。它意味着print(r["A"])
让我们把它分成几个阶段,看看是否有帮助。我假设你很高兴 for
循环 for xyz in r:
相当于做:
xyz = 'A'
# Do the contents of the loop
xyz = 'B'
# Do the contents of the loop
xyz = 'C'
# Do the contents of the loop
所以为了让例子更简单,我们可以看这个案例:
r = {'A':'aa', 'B':'bb', 'C':'cc'}
xyz = 'A'
现在,如果我们这样做:
print(r[xyz])
这有几件事。
xyz
不在引号中,因此 Python 将其视为某物的标签(或 'name')xyz
确实是个标签!它是一个包含值'A'
的变量,一个字符串。- Python 交换
xyz
的 value,所以我们现在要执行的打印语句看起来像print(r['A'])
- Python 检查字符串
'A'
是否是字典r
中的关键字。是! - 键
'A'
的条目值为'aa'
,也是一个字符串,因此打印语句现在如下所示:print('aa')
。没有其他可查找的内容,所以这就是 python 执行的内容。
如果我们尝试这样做:
print(r['xyz'])
'xyx'
是一个文字字符串,因此 python 会尝试查看r
中是否有具有键'xyz'
的条目
r
中没有名为'xyz'
的键,所以python显示错误
下一个:
print(r[A])
A
不在引号中,因此 Python 将其视为某物的标签- 程序中不存在名为
A
的标签,因此 Python 无法查找它的值! - Python 显示错误,因为它无法查找
A
的值
希望这能消除报价差异。