dict使用示例

dict是类似map的容器,可以通过key快速访问。

1、dict的简单使用

示例代码如下(dictTest1.py):

#! /usr/bin/env python
#-*- coding:utf-8 -*-

d1 = dict() # or d1 = {}
d1['a'] = 1
d1['b'] = 2
print d1

d1['a'] = 3 # update data
print d1

for k,v in d1.items():
    print k,v

for k,v in d1.iteritems():
    print k,v

print dict.fromkeys(['a','b','c'],True)
print dict.fromkeys("abc",True)

运行效果如下:

$ python dictTest1.py
{'a': 1, 'b': 2}
{'a': 3, 'b': 2}
a 3
b 2
a 3
b 2
{'a': True, 'c': True, 'b': True}
{'a': True, 'c': True, 'b': True}

上述代码首先创建了一个d1的dict,然后执行添加数据、更新数据、输出数据的操作。 最后两行展示了怎么通过list快速生成一个dict结构。

该代码的github地址: https://github.com/mike-zhang/pyExamples/blob/master/dataStructure/dict_examples/dictTest1.py

2、合并两个dict

2.1 不修改原始dict的合并

示例代码如下(listMerge1.py):

#! /usr/bin/env python
#-*- coding:utf-8 -*-

d1 = { "a" : 1, "b" : 2 }
d2 = { "c" : 1, "d" : 3 }
d3 = dict(d1,**d2)
print d1
print d2
print d3

d11 = {"a" : 1, "b" : 2}
d22 = {"c" : 1, "b" : 3}
d33 = dict(d11,**d22) # overwrite
print d11
print d22
print d33

运行效果如下:

$ python dictMerge1.py
{'a': 1, 'b': 2}
{'c': 1, 'd': 3}
{'a': 1, 'c': 1, 'b': 2, 'd': 3}
{'a': 1, 'b': 2}
{'c': 1, 'b': 3}
{'a': 1, 'c': 1, 'b': 3}

上述代码实现了两个dict的合并,第一部分展示了没有重复数据时的情况,第二部分展示了有重复数据的情况(有重复数据的执行覆盖操作)。

该代码的github地址: https://github.com/mike-zhang/pyExamples/blob/master/dataStructure/dict_examples/dictMerge1.py

2.2 修改原始dict的合并

示例代码如下(listMerge2.py):

#! /usr/bin/env python
#-*- coding:utf-8 -*-

d1 = {"a" : 1, "b" : 2}
d2 = {"c" : 1, "d" : 3}
print "d1:",d1
print "d2:",d2
d1.update(d2)
print "result :",d1

d11 = {"a" : 1, "b" : 2}
d22 = {"c" : 1, "b" : 3}
print "d11:",d11
print "d22:",d22
d11.update(d22)
print "result :",d11

运行效果如下:

$ python dictMerge2.py
d1: {'a': 1, 'b': 2}
d2: {'c': 1, 'd': 3}
result : {'a': 1, 'c': 1, 'b': 2, 'd': 3}
d11: {'a': 1, 'b': 2}
d22: {'c': 1, 'b': 3}
result : {'a': 1, 'c': 1, 'b': 3}

该代码的github地址: https://github.com/mike-zhang/pyExamples/blob/master/dataStructure/dict_examples/dictMerge2.py

3、求dict元素的最大值最小值

这里以int为例

示例代码如下(dictMaxmin1.py):

#! /usr/bin/env python
#-*- coding:utf-8 -*-

d1 = {
    "test1" : 10,
    "test2" : 20,
    "test3" : 5,
    "test4" : 2,
    "test5" : 3,
}

print "by key : "
print "min :",min(d1)
print "max :",max(d1)

print "by value : "
print "min :",min(zip(d1.values(),d1.keys()))
print "max :",max(zip(d1.values(),d1.keys()))

运行效果如下:

$ python dictMaxmin1.py
by key :
min : test1
max : test5
by value :
min : (2, 'test4')
max : (20, 'test2')

该代码的github地址: https://github.com/mike-zhang/pyExamples/blob/master/dataStructure/dict_examples/dictMaxmin1.py