加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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值才能解压缩”或“太多值来解压缩”而崩溃.

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

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

x,y = "a"

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读