简单数据结构:字典
字典存储键值对。
像下面这样, 左边是键, 右边是值. 利用字典, 我们可以快速的定位到一个人, 获取它的年龄和性别.
{
"jia.liu":{"age":28,"gender":"男"}, # 键是字符串, 值是字典
"liujia":(28,"男"), # 键是字符串, 值是元组
"zhuning":(30,"男"),
"tangruihua":(29,"男"),
}
键必须是唯一的, 否则会覆盖.
这是我们的一个Pool,名字叫gds.engine.flight, Pool里面包含一些服务器,我们通过一个字典来存储这个Pool.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
p = {
"department": {
"organization_id": 43,
"alias": "\u673a\u7968",
"name": "FLT"
},
"productline": {
"organization_id": 43,
"alias": "\u673a\u7968",
"name": "FLT"
},
"pool": {
"pool_type": "0",
"id": 350,
"name": "gds.engine.flight"
},
"servers": [
{
"ip": "10.8.89.60",
"hostname": "VMS01860",
"idc": "SHAJQ"
},
{
"ip": "10.8.89.59",
"hostname": "VMS01859",
"idc": "SHAJQ"
},
{
"ip": "10.8.89.58",
"hostname": "VMS01858",
"idc": "SHAJQ"
}
]
}
print type(p), len(p) # <type 'dict'> 4
print "==================== 字典是无序的 ==================="
print {1: 1, 2: 4} == {2: 4, 1: 1} # True
print "==================== 取值 ==================="
print p["department"]["name"] # FLC
# print p["notExistedKey"] #Error
print p.get("notExistedKey") # None
print p.get("notExistedKey", "~~~") # ~~~
print "==================== 遍历 ==================="
for k in p: # 相当于 for k in p.keys():
print k, ":", p[k]
# 或者是一次取出key和value
print
for k, v in p.items():
print k, ":", v
print "==================== 赋值 ==================="
d = {}
d["name"] = "square"
d[1] = 1
d[2] = 4
# 打印出来的顺序和赋值的顺序不一样, 是无序的
print d # {1: 1, 2: 4, 'name': 'square'}
# 后来的赋值会覆盖之前的
d["name"] = "newname"
print d # {1: 1, 2: 4, 'name': 'newname'}
print "==================== 删除 ==================="
del d["name"]
print d # {1: 1, 2: 4}
d["name"] = "square" # 恢复成原来的名字
print "==================== list operations of a dict: ==================="
"""clear, copy, fromkeys, get, has_key, items, iteritems, iterkeys,
itervalues, keys, pop, popitem, setdefault, update, values, viewitems,
viewkeys, viewvalues """
print ", ".join([e for e in dir(dict) if not e.startswith('_')])
print d.keys() # [1, 2, 'name']
print d.values() # [1, 4, 'newname']
print d.items() # [(1, 1), (2, 4), ('name', 'newname')]
print "==================== in ==================="
print 1 in d # True
print 1 in d # True
print d.pop(2) # 4
print d # {1: 1, 'name': 'square'}
print d.popitem() # (1, 1) arbitrary, not random
print d # {'name': 'square'}
# update
d.update({3: 9, 4: 16})
print d # {3: 9, 4: 16, 'name': 'square'}
print "==================== setdefault ==================="
d.setdefault("name", "new name")
print d["name"] # square
d.setdefault("alist", [])
print d["alist"] # []
print "==================== clear ==================="
d.clear()
print d # {}
print "==================== fromkeys ==================="
print dict.fromkeys([1, 2, 3, 4]) # {1: None, 2: None, 3: None, 4: None}
print dict.fromkeys([1, 2, 3, 4], "0") # {1: '0', 2: '0', 3: '0', 4: '0'}