关于字典我不懂的东西

时间:2013-07-21 12:19:00

标签: python

当我试图理解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

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

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

2 个答案:

答案 0 :(得分:7)

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

第一个例子中发生的事情是你从中获取了一个元素,在这种情况下是整个元组(键,值)。当你使用for key, value in Python执行“解包”时,这意味着它将该元组的第一个元素分配给key的key和要赋值的下一个元素,因此你可以将它们作为单独的变量访问。

当你打印那些时,Python打印一个元组(你的第一个例子),作为(1, 2),但是当它被解压缩并且你打印两个单独的变量时,它会输出数字1,然后是数字{ {1}}中间有空格。

答案 1 :(得分:6)

dict.items返回键值对的元组列表。如果for中只有一个名字,那就 将元组分配给名称。使用两个名称,它将键,值分别解压缩到名称。参见:

>>> a, b = (1, 2)
>>> a
1
>>> b
2
>>> a = (1, 2)
>>> a
(1, 2)
>>>