当我试图理解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
为什么第一个输出显示带括号的字符串?
为什么第二个输出不显示逗号?
答案 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)
>>>