当字典键和值是字符串时,为什么它们可以作为元组解包



我有这样的代码:

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)

相关内容

  • 没有找到相关文章

最新更新