您的位置:首页 > 编程语言 > Python开发

字典数据类型-字典的定义

2015-08-23 23:00 513 查看
一、定义一个新字典:

"""
dict.fromkeys(S[,v])
New dict with keys from S and values equal to v.
v defaults to None.
"""
d1 = dict.fromkeys(['a','b'])  #d1= {'a': None, 'b': None}
d2 = dict.fromkeys(['a','b'],["hell o","python"]) #d2= {'a': ['hello', 'python'], 'b': ['hello', 'python']}
print "d1=",d1," ","d2=",d2

#help(dict.fromkeys)

"""
class dict(object)
|dict() -> new empty dictionary
|  dict(mapping) -> new dictionary initialized from a mapping object's
|      (key, value) pairs
|  dict(iterable) -> new dictionary initialized as if via:
|      d = {}
|      for k, v in iterable:
|          d[k] = v
|  dict(**kwargs) -> new dictionary initialized with the name=value pairs
|      in the keyword argument list.  For example:  dict(one=1, two=2)
"""
keyslist = [1,2,3]
valueslist = ["hello",',','python']
d3 = dict(zip(keyslist,valueslist))
print "d3=",d3 #d3= {1: 'hello', 2: ',', 3: 'python'}

d4 = dict(name = "zroad",age = 42)
print "d4=",d4 #d4= {'age': 42, 'name': 'zroad'}
#help(dict)

"""
通过赋值生成字典:字典键不能为列表、字典,但可为元组
d5= {1: '1'}   d6= {'1': 1}
"""
d5 ={}
d5[1] = "1"

d6={}
d6['1'] = 1

d7 = {}
d7[(1,3)] = [1,2,3]
print "d5=",d5," ","d6=",d7," ",d7

"""
dict.items():返回元组的序列
[('age', 30), ('height', 1.65), ('name', 'zroad'), ('weight', 140), ('sex', 1)]
"""
d8 = {"name":"zroad","age":30,"sex":1,"height":1.65,"weight":140}
print d8.items()

"""
键存在性检查
"""
if "age" in d8:
print "True"
else:
print "False"

"""
生成字典的副本
"""
d9 = d8.copy()
print id(d8),id(d9)
print type(d9),d9


二、获取/设置字典的值:

def getDict(dictSrc,key,defaultValue):
return dictSrc.get(key,defaultValue)

dictSrc = {"name":'zroad',"age":30}
"""
zroad
30
not found!
"""
print getDict(dictSrc,'name','not found!')
print getDict(dictSrc,'age','not found!')
print getDict(dictSrc,'sex','not found!')

def setDict(dictSrc,key,defaultValue):
dictSrc.setdefault(key,defaultValue)

#help(dict.setdefault)

"""
dictSrc= {'age': 30, 'name': 'zroad', 'sex': 1}
dict.setdefault(k,v)若k不是dict的键则赋值为v,若是dict的键则不改变原键-值对
setdefault(k,v)的返回值为dictSrc[k]
"""
setDict(dictSrc,'sex',1)
setDict(dictSrc,'name','hlf')
print "dictSrc=",dictSrc

#help(zip)
"""
zip(...)
zip(seq1 [, seq2 [...]]) -> [(seq1[0], seq2[0] ...), (...)]

Return a list of tuples, where each tuple contains the i-th element
from each of the argument sequences.  The returned list is truncated
in length to the length of the shortest argument sequence.
"""
"""
从序列交替中获取值生成字典
"""
def dictFromList(keysAndValues):
return dict(zip(keysAndValues[::2],keysAndValues[1::2]))

keysAndValues = [1,2,3,4,5,6,7,8,9,10]
keysAndValues1 = [1,2,3,4,5,6,7,8,9]
"""
result:
zip(a,b)= [(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]
{1: 2, 3: 4, 9: 10, 5: 6, 7: 8}
{1: 2, 3: 4, 5: 6, 7: 8}
"""
print "zip(a,b)=",zip(keysAndValues[::2],keysAndValues[1::2])
print dictFromList(keysAndValues)
print dictFromList(keysAndValues1)

"""
获取字典的子集
"""
def sub_dict(somedict,somekeys,default=None):
"""
该种写法不会影响到原始字典,若要删除原始字典,使用somedict.pop(k,default)
"""
return dict([k,somedict.get(k,default)] for k in somekeys)

somedict = {"a":1,'b':2,'c':3,4:5,5:[1,2,3],6:{'a':1,'b':2}}
print sub_dict(somedict,"abc")
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 字典定义