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”用于键但不用于字符串?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)