2

当我试图理解 Python 字典时,我比较了两个程序的输出。我不明白为什么输出不同。

两个程序都以

data = {
        'key1': 'value1',
        'key2': 'value2',
        'key3': 'value3'
        }

第一个程序:

for keys in data.items():
    print keys

第二个程序:

for keys, values in data.items():
    print keys, values

输出是

('key3', 'value3')
('key2', 'value2')
('key1', 'value1')

key3 value3
key2 value2
key1 value1

为什么第一个输出显示带括号的字符串?

为什么第二个输出不显示逗号?

4

2 回答 2

7

dict.items返回 (key, value) 的 2 元组序列。

在第一个示例中发生的情况是,您当时从那个中获取一个元素,在这种情况下,它是整个元组(键,值)。当您使用for key, value inPython 执行“解包”时,这意味着它将该元组的第一个元素分配给键对键,并将下一个元素分配给值,因此您可以将它们作为单独的变量进行访问。

当您打印这些时,Python 会打印一个元组(您的第一个示例), as (1, 2),但是当它被解包并打印两个单独的变量时,它会打印数字1后跟数字2,中间有空格。

于 2013-07-21T12:21:44.100 回答
6

dict.items返回键值对元组的列表。如果 for 中只有一个名称,则将元组分配给该名称。使用两个名称,它将键、值分别解包到名称。看:

>>> a, b = (1, 2)
>>> a
1
>>> b
2
>>> a = (1, 2)
>>> a
(1, 2)
>>> 
于 2013-07-21T12:22:05.563 回答