我有这样的代码:
my_dict = {"one":"AAA", "two":"BBB", "thr":"CCC"}
for a, b, c in my_dict.keys():
print(a, b, c)
print("-----")
for x, y, z in my_dict.values():
print(x, y, z)
并且在运行时返回低于输出的值。
o n e
t w o
t h r
-----
A A A
B B B
C C C
有人能解释一下,当键和值是字符串类型时,为什么它能够将它们解包为元组吗?
我知道my_dict.items()
可以被解压缩为类型(a,b(的元组,因为my_dict.items()
返回一个元组。但是,当返回类型为字符串时,为什么会出现这种情况呢?
这与字典本身无关。
这仅仅是因为字符串是";不可包装";因为它们是可迭代的。
您的代码工作的原因与以下工作的原因相同:
a, b, c = 'abc'
print(a, b, c)
# a b c
请注意,如果任何字符串恰好短于或长于3个字符,则您的示例(以及我的示例中的代码(将中断:
a, b, c = 'abcd'
ValueError: too many values to unpack (expected 3)
a, b, c = 'ab'
ValueError: not enough values to unpack (expected 3, got 2)