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

本文详细探讨Python中的字典数据类型,包括如何定义一个新字典及如何获取和设置字典中的值。通过实例解析,帮助读者掌握这一重要的数据结构。

一、定义一个新字典:

"""
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")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值