12 字典的遍历在 Python2 与 Python3 中区别

Python2 中字典的遍历

例1

d = {"a": "apple", "b": "banana", "c": "cherry", "d": "durian"}

for k in d:
    print "d[%s] =" % k, d[k]

>>>

d[a] = apple
d[b] = banana
d[c] = cherry
d[d] = durian

例2

  • items() 会把字典中的键值对组成元组,存放到列表中返回
>>> d = {"a": "apple", "b": "banana", "c": "cherry", "d": "durian"}
>>> print d.items()
[('a', 'apple'), ('c', 'cherry'), ('b', 'banana'), ('d', 'durian')]
>>> 

例3

d = {"a": "apple", "b": "banana", "c": "cherry", "d": "durian"}

for k, v in d.items():
    print "d[%s] = %s" % (k, v)

>>>

d[a] = apple
d[b] = banana
d[d] = durian
d[c] = cherry

例4

d = {"a": "apple", "b": "banana", "c": "cherry", "d": "durian"}
print d.iteritems()  # 返回字典的遍历器对象

for k, v in d.iteritems():
    print "d[%s] = %s" % (k, v)

for k, v in zip(d.iterkeys(), d.itervalues()):
    print "* d[%s] = %s" % (k, v)

>>>

<dictionary-itemiterator object at 0x00A50B60>
d[a] = apple
d[b] = banana
d[d] = durian
d[c] = cherry
* d[a] = apple
* d[b] = banana
* d[d] = durian
* d[c] = cherry

Python3 中字典的遍历

例1

d = {"a": "apple", "b": "banana", "c": "cherry", "d": "durian"}

for k in d:
    print("d[{0}] = {1}".format(k, d[k]))

>>>

d[a] = apple
d[b] = banana
d[c] = cherry
d[d] = durian

例2

>>> d = {"a": "apple", "b": "banana", "c": "cherry", "d": "durian"}
>>> print(d.items())
dict_items([('a', 'apple'), ('b', 'banana'), ('c', 'cherry'), ('d', 'durian')])
>>> 

例3

d = {"a": "apple", "b": "banana", "c": "cherry", "d": "durian"}

for k, v in d.items():
    print("d[{}] = {}".format(k, v))

for k in d.keys():
    print("* d[{}] = {}".format(k, d[k]))

for v in d.values():
    print(v)

>>>

d[a] = apple
d[b] = banana
d[c] = cherry
d[d] = durian
* d[a] = apple
* d[b] = banana
* d[c] = cherry
* d[d] = durian
apple
banana
cherry
durian

结论

  1. Python2/3 中的字典都是无序的,Python3 输出字典中的键值对时看起来有一定顺序,特别是数据量小时
  2. Python2 使用 iteritems(), iterkeys(), itervalues()
  3. Python3 使用 items(), keys(), values()
Python2 Python3
items() items()
iteritems() items()
iterkeys() keys()
itervalues() values()
原文地址:https://www.cnblogs.com/yorkyu/p/10335641.html