python – 为什么“in”用于键但不用于字符串?
发布时间:2020-12-20 12:35:24 所属栏目:Python 来源:网络整理
导读:今天我在 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] = 1 for 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值才能解压缩”或“太多值来解压缩”而崩溃.
第二个循环直接遍历字符串“ab”.迭代字符串时,它会将字符串分解为单字符字符串.第一次迭代是“a”,第二次迭代是“b”.在第一次迭代中,它尝试执行: x,y = "a" 此赋值失败,“需要多于1个值来解包”,因为左侧有两个变量,右侧只有一个字符. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |