zoukankan      html  css  js  c++  java
  • Python 基础数据类型之dict

    字典是另一种可变容器模型,且可存储任意类型对象。
    字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:
    d = {key1 : value1, key2 : value2 }
    键必须是唯一的,但值则不必。
    值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

    1、字典的定义

    dict1 = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
    dict2 = {'abc': 456};
    dict3 = {'abc': 123, 10: 20};
    dict4 = {} #定义空字典
    dict5 = dict() #定义空字典

    2、字典的访问

      字典的索引就是字典的键值

    dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
    print "dict['Name']: ", dict['Name'];
    print "dict['Age']: ", dict['Age'];
    
    #运行结果
    dict['Name']:  Zara
    dict['Age']:  7

    3、修改字典条目

      键值存在则更改原Value值,键值不存在则增加新的键值对

    dict = {"one": 1, "two": 2, "three": 3, };
    
    dict['one'] = 100;  # 如存在,则更新存在的条目
    dict['four'] = 4;  # 如不存在则添加新条目
    
    print "dict['one']: ", dict['one'];
    print "dict['four']: ", dict['four'];
    print dict
    
    #运行结果
    dict['one']:  100
    dict['four']:  4
    {'four': 4, 'three': 3, 'two': 2, 'one': 100}

    4、删除字典

      删除包括:删除单个元素、删除所有元素、删除整个字典

    dict = {"one": 1, "two": 2, "three": 3,};
    
    del dict['one'];  # 删除键是'Name'的条目
    print dict
    dict.clear();  # 清空词典所有条目
    print dict
    del dict;  # 删除词典
    # print dict #此句会报TypeErro错,应为字典已经不存在了
    
    #运行结果
    {'three': 3, 'two': 2}
    {}

    5、字典的常用方法

    1、 dict.clear() #删除字典内所有元素

    dict = {'Name': 'yang', "age": 20}
    print dict
    dict.clear()
    print dict
    
    #running result
    {'age': 20, 'Name': 'yang'}
    {}
    View Code

    2、 dict.copy() #返回一个字典的浅复制

    3、 dict.fromkeys(seq[, val]) #创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值

    seq = ('name', 'age', 'sex')
    
    dict = dict.fromkeys(seq)
    print "New Dictionary : %s" % str(dict)
    
    dict = dict.fromkeys(seq, 10)
    print "New Dictionary : %s" % str(dict)
    
    #运行结果
    New Dictionary : {'age': None, 'name': None, 'sex': None}
    New Dictionary : {'age': 10, 'name': 10, 'sex': 10}
    View Code

    4、 dict.get(key, default=None) #返回指定键的值,如果值不在字典中返回default值

    dict = {'Name': 'yang', 'Age': 27}
    
    print "Value : %s" %  dict.get('Age')  # 有则返回Value值
    print "Value : %s" %  dict.get('Sex', "Never") # 没有则返回给定的Value值
    print "Value : %s" %  dict.get('Sex') # 没有给定Value 返回NONE
    
    #运行结果
    Value : 27
    Value : Never
    Value : None
    View Code

    5、 dict.has_key(key) #如果键在字典dict里返回true,否则返回false

    dict = {'Name': 'yang', 'Age': 27}
    
    print "Value : %s" %  dict.has_key('Age')
    print "Value : %s" %  dict.has_key('Sex')
    
    #运行结果
    Value : True
    Value : False
    View Code

    6、 dict.items() #以列表返回可遍历的(键, 值) 元组数组
      dict.iteritems(self) #生成一个包含所有键值对的可迭代对象
      dict.viewitems(self) # 功能和iteritems类似,但是能体现出变化的值

    dict = {'aaa': 'www.aaa.com', 'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com'}
    
    print "字典值 : %s" % dict.items()
    
    # 遍历字典列表
    for key, values in dict.items():
        print key, values
    
    # 遍历可迭代的对象 iteritems实现
    for key, values in dict.iteritems():
        print key, values
    
    # 遍历可迭代的对象 viewitems实现
    for key, values in dict.viewitems():
        print key, values
    
    #运行结果
    字典值 : [('aaa', 'www.aaa.com'), ('bbb', 'www.bbb.com'), ('ccc', 'www.ccc.com')]
    aaa www.aaa.com
    bbb www.bbb.com
    ccc www.ccc.com
    aaa www.aaa.com
    bbb www.bbb.com
    ccc www.ccc.com
    aaa www.aaa.com
    bbb www.bbb.com
    ccc www.ccc.com
    View Code

    7、 dict.keys() #以列表返回一个字典所有的键
      dict.iterkeys(self) #返回一个包含所有键的可迭代对象
      dict.viewkeys(self) # 功能和iterkeys类似,但是能体现出变化的值

    dict = {'aaa': 'www.aaa.com', 'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com'}
    
    print "键 : %s" % dict.keys()
    
    # 遍历字典列表
    for key in dict.keys():
        print ("dict.keys(): %s" % key)
    
    # 遍历可迭代的对象 iteritems实现
    for key in dict.iterkeys():
        print ("dict.iterkeys(): %s" % key)
    
    # 遍历可迭代的对象 viewitems实现
    for key in dict.viewkeys():
        print ("dict.viewkeys(): %s" % key)
    
    #运行结果
    键 : ['aaa', 'bbb', 'ccc']
    dict.keys(): aaa
    dict.keys(): bbb
    dict.keys(): ccc
    dict.iterkeys(): aaa
    dict.iterkeys(): bbb
    dict.iterkeys(): ccc
    dict.viewkeys(): aaa
    dict.viewkeys(): bbb
    dict.viewkeys(): ccc
    View Code

    8、 dict.values() #以列表返回字典中的所有值
      dict.itervalues(self) 返回一个包含所有Value的可迭代对象
      dict.viewvalues(self) # 功能和itervalues类似,但是能体现出变化的值

    dict = {'aaa': 'www.aaa.com', 'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com'}
    
    print "Value值 : %s" % dict.values()
    
    # 遍历字典列表
    for value in dict.values():
        print ("dict.values(): %s" % value)
    
    # 遍历可迭代的对象 iteritems实现
    for value in dict.itervalues():
        print ("dict.itervalues(): %s" % value)
    
    # 遍历可迭代的对象 viewitems实现
    for value in dict.viewvalues():
        print ("dict.viewvalues(): %s" % value)
    
    #运行结果
    Value值 : ['www.aaa.com', 'www.bbb.com', 'www.ccc.com']
    dict.values(): www.aaa.com
    dict.values(): www.bbb.com
    dict.values(): www.ccc.com
    dict.itervalues(): www.aaa.com
    dict.itervalues(): www.bbb.com
    dict.itervalues(): www.ccc.com
    dict.viewvalues(): www.aaa.com
    dict.viewvalues(): www.bbb.com
    dict.viewvalues(): www.ccc.com
    View Code

    9、 dict.setdefault(key, default=None) #和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    dict = {'aaa': 'www.aaa.com', 'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com'}
    a = dict.setdefault("aaa")  # 有该键则返回Value值
    b = dict.setdefault("ddd","www.ddd.com") #没有该键 则在字典中添加,并返回给定的值
    print a, b
    print dict
    
    #运行结果
    www.aaa.com www.ddd.com
    {'aaa': 'www.aaa.com', 'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com', 'ddd': 'www.ddd.com'}
    View Code

    10、dict.update(dict2) #把字典dict2的键/值对更新到dict里

    dict = {'aaa': 'www.aaa.com', 'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com'}
    dict2 = {100:100}
    dict.update({"ddd":"www.ddd.com"})
    print dict
    dict.update(dict2)
    print dict
    
    #运行结果
    {'aaa': 'www.aaa.com', 'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com', 'ddd': 'www.ddd.com'}
    {100: 100, 'aaa': 'www.aaa.com', 'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com', 'ddd': 'www.ddd.com'}
    View Code

    11、dict.pop(key[,default]) #删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    dict = {'aaa': 'www.aaa.com', 'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com'}
    print dict.pop("aaa") # 如果键存在,则在字典中删除对应键值对,并返回Value值
    print dict.pop("ddd", "www.ddd.com") #如果键不存在,则返回给定的默认Value值
    print dict
    
    # 运行结果
    www.aaa.com
    www.ddd.com
    {'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com'}
    View Code

    12、dict.popitem() 随机返回并删除字典中的一对键和值。

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    dict = {'aaa': 'www.aaa.com', 'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com'}
    a = dict.popitem()
    
    print a  # 随机删除的键值对
    print dict # 打印随机删除一个键值对后的字典
    
    #运行结果
    ('aaa', 'www.aaa.com')
    {'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com'}
    View Code

    6.字典的内置函数 

    1、 cmp(dict1, dict2) #比较两个字典元素。
    2、 len(dict) #计算字典元素个数,即键的总数。
    3、 str(dict) #输出字典可打印的字符串表示。
    4、 type(variable) #返回输入的变量类型,如果变量是字典就返回字典类型。

    作者:杨永明
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
  • 相关阅读:
    华为实习日记——第二十三天
    华为实习日记——第二十二天
    华为实习日记——第二十一天
    华为实习日记——第二十天
    HDU 5102 The K-th Distance(模拟)
    HDU 4113 Construct the Great Wall(插头dp)
    UVALive 4849 String Phone(2-sat、01染色)
    HDU 4859 海岸线(最大流最小割)
    HDU 3879 Base Station(最大权闭合子图)
    POJ 3155 Hard Life(最大密度子图)
  • 原文地址:https://www.cnblogs.com/ming5218/p/7896225.html
Copyright © 2011-2022 走看看