码迷,mamicode.com
首页 > 编程语言 > 详细

Python 字典

时间:2017-08-17 18:31:55      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:随机   school   允许   app   pre   import   typeerror   判断   copy   

访问字典里的值:

>>>dict = {Name: Zara, Age: 7, Class: First};
>>>print "dict[‘Name‘]: ", dict[Name];
dict[Name]:  Zara
>>>print "dict[‘Age‘]: ", dict[Age];
dict[Age]:  7

如果用字典里没有的键访问数据,会输出错误。


 修改、删除字典:

dict = {Name: Zara, Age: 7, Class: First};
 
dict[Age] = 8; # update existing entry
dict[School] = "DPS School"; # Add new entry
 
 
print "dict[‘Age‘]: ", dict[Age];
print "dict[‘School‘]: ", dict[School];


del dict[Name]; # 删除键是‘Name‘的条目
dict.clear();     # 清空词典所有条目
del dict ;        # 删除词典
 
print "dict[‘Age‘]: ", dict[Age];

结果:

dict[Age]:  8
dict[School]:  DPS School
dict[Age]:
Traceback (most recent call last):
  File "test.py", line 8, in <module>
    print "dict[‘Age‘]: ", dict[Age];
TypeError: type object is unsubscriptable

字典特性:

  字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。

两个重要的点需要记住:

 1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住。

2)键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行。


字典常用函数:

函    数 说    明
dict.clear()
删除字典内所有元素。(无返回值)
dict.copy()
返回一个字典的浅复制。
dict.fromkeys(seq[, value]))
用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值。
dict.get(key, default=None)
返回指定键的值,如果值不在字典中返回默认值。
dict.has_key(key)
用于判断键是否存在于字典中,如果键在字典dict里返回true,否则返回false。
dict.items()
以列表返回可遍历的(键, 值) 元组数组。
dict.keys()
以列表返回一个字典所有的键。
dict.setdefault(key, default=None)
和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default。
dict.update(dict2)
把字典dict2的键/值对更新到dict里。
dict.values()
以列表返回字典中的所有值。
pop(key[,default])
删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
popitem()
随机返回并删除字典中的一对键和值。如果字典已经为空,却调用了此方法,就报出KeyError异常。

dict.fromkeys(seq[, value])):

>>>seq = (name, age, sex)
>>>dict = dict.fromkeys(seq)
>>>dict
{age: None, name: None, sex: None}
>>>dict = dict.fromkeys(seq, 10)
>>>dict
{age: 10, name: 10, sex: 10}

dict.get(key, default=None):

>>>dict = {Name: Zara, Age: 27}
>>>print "Value : %s" %  dict.get(Age)
Value : 27
>>>print "Value : %s" %  dict.get(Sex, "Never")
Value : Never

dict.items():

dict = {Google: www.google.com, Runoob: www.runoob.com, taobao: www.taobao.com}
 
print "字典值 : %s" %  dict.items()
 
# 遍历字典列表
for key,values in  dict.items():
    print key,values

结果:

字典值 : [(Google, www.google.com), (taobao, www.taobao.com), (Runoob, www.runoob.com)]
Google www.google.com
taobao www.taobao.com
Runoob www.runoob.com

 


字典值可以是任意数值类型:
>>> dict1 = {"a":[1,2]}      # 值为列表
>>> print dict1["a"][1]
2
>>> dict2 = {"a":{"c":"d"}}   # 值为字典
>>> print dict2["a"]["c"]
d

 

Python 直接赋值、浅拷贝和深度拷贝解析:

  • 直接赋值:其实就是对象的引用(别名)。b = a: 赋值引用,a 和 b 都指向同一个对象。

  • 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。b = a.copy(): 浅拷贝, a 和 b 是一个独立的对象,但他们的子对象还是指向统一对象(是引用)。

  • 深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。b = copy.deepcopy(a): 深度拷贝, a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。

    import copy
    a = [1, 2, 3, 4, [a, b]] #原始对象
     
    b = a                       #赋值,传对象的引用
    c = copy.copy(a)            #对象拷贝,浅拷贝
    d = copy.deepcopy(a)        #对象拷贝,深拷贝
     
    a.append(5)                 #修改对象a
    a[4].append(c)            #修改对象a中的[‘a‘, ‘b‘]数组对象
     
    print( a = , a )
    print( b = , b )
    print( c = , c )
    print( d = , d )

    结果:

    (a = , [1, 2, 3, 4, [a, b, c], 5])
    (b = , [1, 2, 3, 4, [a, b, c], 5])
    (c = , [1, 2, 3, 4, [a, b, c]])
    (d = , [1, 2, 3, 4, [a, b]])

     

 

Python 字典

标签:随机   school   允许   app   pre   import   typeerror   判断   copy   

原文地址:http://www.cnblogs.com/Vinson404/p/7383138.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!