python – 为什么“in”用于键但不用于字符串?

python – 为什么“in”用于键但不用于字符串?,第1张

概述今天我在 Python中遇到了一个非常奇怪的字符串和字典.有人可以向我解释为什么print语句在第一个for循环中工作但在第二个for循环中失败? test = 'ab'test_dict = {}test_dict[test] = 1for x, y in test_dict: print('%s %s' % (x,y))for x,y in test: print( 今天我在 Python中遇到了一个非常奇怪的字符串和字典.有人可以向我解释为什么print语句在第一个for循环中工作但在第二个for循环中失败?

test = 'ab'test_dict = {}test_dict[test] = 1for x,y in test_dict:    print('%s %s' % (x,y))for x,y in test:    print('%s %s' % (x,y))
解决方法 两个循环都坏了.第一个只是碰巧工作,因为测试恰好是两个字符长的非常特殊的巧合,因此可以解压缩成两个变量x和y.

要迭代dict的键和值,请写:

for k,v in d.items():    ...

如果你只想要钥匙,你可以做:

for k in d:    ...

详细地说,当你遍历一个字典时,它会遍历键.

for x,y in test_dict

dict只有一个键,“ab”.因此,在第一次也是唯一一次迭代中,它将该字符串分配给x和y,就像您编写的那样:

x,y = "ab"

碰巧,这是一个有效的解包.左侧有两个变量,右侧是两个项目的容器. x变为“a”,y变为“b”.

如果测试时间更长或更短,第一个循环也会因“需要超过N值才能解压缩”或“太多值来解压缩”而崩溃.

Why is the string unpacked in 1 scenario but not unpacked in the other?

第二个循环直接遍历字符串“ab”.迭代字符串时,它会将字符串分解为单字符字符串.第一次迭代是“a”,第二次迭代是“b”.在第一次迭代中,它尝试执行:

x,y = "a"

此赋值失败,“需要多于1个值来解包”,因为左侧有两个变量,右侧只有一个字符.

总结

以上是内存溢出为你收集整理的python – 为什么“in”用于键但不用于字符串?全部内容,希望文章能够帮你解决python – 为什么“in”用于键但不用于字符串?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1195062.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存