aDict = {'key1':'value1', 'key2':'value2', 'key3':'value3'}
print '-----------dict-------------'
for d in aDict:
print "%s:%s" %(d, aDict[d])
#遍历aDict中的key,并利用key索引出values:
print '-----------item-------------'
for (k,v) in aDict.items():
print '%s:%s' %(k, v)
#aDict.item():返回的是一个列表,元素是每组key和value组成的tuple:[(key1,value1),...,(key3,value3)]所以前面的(k,v)用的是values模式
print '------------iteritems---------'
for k,v in aDict.iteritems():
print '%s:%s' % (k, v)
#一个迭代器函数。
print '---------iterkeys---------------'
for k in aDict.iterkeys():
print '%s:%s' % (k, aDict[k])
#类似于第一种情况 得到一个key
print '------------iterkeys, itervalues----------'
for k,v in zip(aDict.iterkeys(), aDict.itervalues()):
print '%s:%s' % (k, v)
#区别于第二种情况,得到一个value
#所以比较难理解的是第二和三种情况。item代表一个key和一个对应的value。
下面是自己的代码输出试验。
n [30]: aDict = {'key1':'value1', 'key2':'value2', 'key3':'value3'}
for k in aDict:
print k
key3
key2
key1
#只输出key
for (k,v) in aDict.items():
print k
print v
print (k,v)
key3
value3
('key3', 'value3')
key2
value2
('key2', 'value2')
key1
value1
('key1', 'value1')
for k in aDict.iteritems():
print k
('key3', 'value3')
('key2', 'value2')
('key1', 'value1')
for v in aDict.iteritems():
print v
('key3', 'value3')
('key2', 'value2')
('key1', 'value1')
#上面两组是一样的。单个的值会返回一组items
for k,v in aDict.iteritems():
print k
print v
key3
value3
key2
value2
key1
value1
for k in aDict.iterkeys():
print k
key3
key2
key1
for v in aDict.itervalues():
print v
value3
value2
value1
for k,v in zip(aDict.iterkeys(), aDict.itervalues()):
print k
print v
key3
value3
key2
value2
key1
value1
#最后注意python 中的dict items 只能保证完整性不能保证顺序。这里为什么是321.。。我也不知道。
# reference http://ghostfromheaven.iteye.com/blog/1549441