zoukankan      html  css  js  c++  java
  • [ Python入门教程 ] Python字典数据类型及基本操作

      字典是Python中重要的数据类型,字典是由"键-值"对组成的集合,"键-值"对之间用逗号隔开,包含在一对花括号中。字典中的"值"通过"键"来引用。

    创建字典

      创建字典的格式如下:

    dictionary = {key1:value1, key2:value2, ...}

      创建实例如下:

    dict = {} #空字典
    dict1 = {'Lesson1': 'Python', 'Lesson2': 'Java', 'Lesson3': 'Shell')} #多元素字典
    dict2 = {'lesson1': 'Python', lesson2': 'Java', 'lesson3': 'Shell')} #注意和dict1不同(lesson首字母小写),原因是字典中的键是区分大小写的

      说明:字典的键是区分大小写的。

    获取字典的值

        访问字典中的元素有2种方法。第1种是通过key值获取相应的value值,第二种是通过字典函数get()来获取。

       (1)通过key值获取相应的value值。语法格式为:value = dict[key]。具体实例如下:

    >>> dict1 = {'Lesson1': 'Python'}
    >>> dict1['Lesson1']
    'Python'
    >>> dict1['Lesson2'] #不存在对应的键值,返回KeyError报错
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    KeyError: 'Lesson2'

      (2)通过get()函数获取value值,get()函数使用格式如下:

    dict.get(key[,default_value])

      说明:参数key表示字典的键值,参数default_value可以作为get()的返回值,默认值为None。如果指定default_value参数值,表示如果参数key键值在字典key列表中,则返回对应的value值,如果不在,则返回预先设定的default_value的值。具体实例如下所示:

    >>> dict1 = {'Lesson1': 'Python'}
    >>> dict1.get('Lesson1')
    'Python'
    >>> dict1.get('Lesson2')
    >>> dict1.get('Lesson2','Perl')
    'Perl'

    添加字典元素

      方法一:直接添加方法,使用格式如下:

    dict[key] = value

      如果键值key不在字典dict的key列表中,字典dict添加(key:value)的记录。如果已经在key列表中,则修改键值key对应的value值。

    dict['Lesson3'] = 'Perl'

      举个例子,假设字典dict中不存在键名为Lesson3的字符串,则直接添加。如果已存在,则刷新值为Perl字符串。实例如下:

    >>> dict1 = {'Lesson1': 'Python'}
    >>> dict1['Lesson3'] = 'Perl'
    >>> dict1
    {'Lesson3': 'Perl', 'Lesson1': 'Python'}
    >>> dict1 = {'Lesson3': 'Python'}
    >>> dict1['Lesson3'] = 'Perl'
    >>> dict1
    {'Lesson3': 'Perl'}

      方法二:通过调用setdefault()函数方法实现。格式如下:

    dict.setdefault(key[,default_value])

      如果索引key在字典key列表中,则返回对应的value值,如果不在key列表中,则添加新索引key和value在字典中,并反馈default_value值,默认值 为None。使用实例如下:

    >>> dict1 = {'Lesson1': 'Python'}
    >>> dict1.setdefault('Lesson1')
    'Python'
    >>> dict1.setdefault('Lesson2')
    >>> dict1
    {'Lesson2': None, 'Lesson1': 'Python'}
    >>> dict1.setdefault('Lesson3','Shell')
    'Shell'
    >>> dict1
    {'Lesson3': 'Shell', 'Lesson2': None, 'Lesson1': 'Python'}

    获取字典所有keys、Values或者key-valu键值对

    (1)获取字典的所有"键"-"值"元素。通过调用字典的items()方法实现,返回的是(key,value)元组组成的列表。实例如下:

    >>> dict1 = {'Lesson1': 'Python', 'Lesson2': 'Java', 'Lesson3': 'Shell'}
    >>> dict1.items()
    [('Lesson3', 'Shell'), ('Lesson2', 'Java'), ('Lesson1', 'Python')]

    (2)获取字典的中key组成的列表。通过调用字典的keys()方法实现。实例如下:

    >>> dict1 = {'Lesson1': 'Python', 'Lesson2': 'Java', 'Lesson3': 'Shell'}
    >>> dict1.keys()
    ['Lesson3', 'Lesson2', 'Lesson1']

    (3)获取字典的中value组成的列表。通过调用字典的values()方法实现。实例如下:

    >>> dict1 = {'Lesson1': 'Python', 'Lesson2': 'Java', 'Lesson3': 'Shell'}
    >>> dict1.values()
    ['Shell', 'Java', 'Python']

    判断指定key是否存在字典

      判断字典中是否存在键值为k的元素。通过调用字典has_key()方法实现。实例如下:

    >>> dict1 = {'Lesson1': 'Python', 'Lesson2': 'Java', 'Lesson3': 'Shell'}
    >>> dict1.has_key('Lesson1')
    True
    >>> dict1.has_key('Lesson4')
    False

    删除字典元素。

      方法一:通过调用内置函数del实现。实例如下:

    >>> dict1 = {'Lesson1': 'Python', 'Lesson2': 'Java', 'Lesson3': 'Shell'}
    >>> del dict1['Lesson1']
    >>> dict1
    {'Lesson3': 'Shell', 'Lesson2': 'Java'}

      方法二:通过调用字典的pop()函数实现。pop()函数格式如下:

    dict.pop(key[,default_value])

        pop()函数必须指定参数索引key才能删除对应的值。如果索引key在字典key列表中,则返回索引key对应的value值。如果不存在,则返回预先设置的default_value值,如果未设置,会爬出KeyError异常信息。实例如下:

    >>> dict1 = {'Lesson1': 'Python', 'Lesson2': 'Java', 'Lesson3': 'Shell'}
    >>> dict1.pop('Lesson3')
    'Shell'
    >>> dict1
    {'Lesson2': 'Java', 'Lesson1': 'Python'}
    >>> dict1.pop('Lesson3','Perl')
    'Perl'

      方法三:调用字典的clear()函数,清除字典的所有内容。实例如下:

    >>> dict1 = {'Lesson1': 'Python', 'Lesson2': 'Java', 'Lesson3': 'Shell'}
    >>> dict1.clear()
    >>> dict1
    {}

    字典排序

      字典的排序可以通过使用sorted()函数实现,实例如下:

    >>> dict = {'2':"Python",'1':"Java",'3':"C++"}
    >>> sorted(dict.items(),key=lambda d:d[0])
    [('1', 'Java'), ('2', 'Python'), ('3', 'C++')]
    >>> sorted(dict.items(),key=lambda d:d[1])
    [('3', 'C++'), ('1', 'Java'), ('2', 'Python')]

      也可以使用如下方法对值进行排序,先使用zip进行反转

    >>> sorted(zip(prices.values(),prices.keys()))
    [(10.75, 'FB'), (37.2, 'HPQ'), (45.23, 'ACME'), (205.55, 'IBM'), (612.78, 'AAPL')]

     说明:如果存在values相同的情况下,则会按照key的大小进行排序。如下:

    >>> prices = {'ACME': 45.23, 'AAPL': 612.78, 'IBM': 612.78, 'HPQ': 37.20,'FB': 10.75 }
    >>> sorted(zip(prices.values(),prices.keys()))
    [(10.75, 'FB'), (37.2, 'HPQ'), (45.23, 'ACME'), (612.78, 'AAPL'), (612.78, 'IBM')]

    计算字典最大值和最小值

      通过使用zip()将字典键和值反转,再使用min()和max()函数计算。

    >>> prices = {'ACME': 45.23, 'AAPL': 612.78, 'IBM': 205.55, 'HPQ': 37.20,'FB': 10.75 }
    >>> min_price = min(zip(prices.values(),prices.keys()))
    >>> print(min_price)
    (10.75, 'FB')
    >>> max_price = max(zip(prices.values(),prices.keys()))
    >>> print(max_price)
    (612.78, 'AAPL')

    获取字典相同元素

     获取两个字典相同的键、值或者items。可以通过集合运算的方式获取。

    >>> dic_a = {'x':1,'y':2,'z':3}
    >>> dic_b = {'w':10,'x':11,'y':2}
    >>> dic_a.keys() & dic_b.keys()
    {'x', 'y'}
    >>> dic_a.keys() - dic_b.keys()
    {'z'}
    >>> dic_a.items() & dic_a.items()
    {('z', 3), ('x', 1), ('y', 2)}

    这些类型的操作额可用来修改或过滤掉字典中的内容。使用字典推导式代码如下:

    >>> dic_c = { key:dic_a[key] for key in dic_a.keys() - {'z','w'}}
    >>> print(dic_c)
    {'x': 1, 'y': 2}

     创建有序字典

      可以使用collections模块中的OrderedDict类,当对字典迭代时,它会严格按照元素初始添加的顺序进行。

    >>> from collections import  OrderedDict
    >>> prices = OrderedDict()
    >>> prices['ACME'] = 45
    >>> prices['AAPL'] = 46
    >>> prices['IBM'] = 47
    >>> for key in prices:
    ...   print(key,prices[key])
    ...
    ('ACME', 45)
    ('AAPL', 46)
    ('IBM', 47)

     从字典中提取子集

      从指定的字典中按照键或者值进行过滤获取字典子集。

    >>> prices = {'ACME': 45.23, 'AAPL': 612.78, 'IBM': 205.55, 'HPQ': 37.20,'FB': 10.75 }
    >>> p1 = {key:value for key, value in prices.items() if value > 20}
    >>> print(p1)
    {'HPQ': 37.2, 'AAPL': 612.78, 'ACME': 45.23, 'IBM': 205.55}
    >>> tech_name = {'ACME', 'AAPL', 'IBM'}
    >>> p2 = {key:value for key, value in prices.items() if key in tech_name}
    >>> print(p2)
    {'AAPL': 612.78, 'IBM': 205.55, 'ACME': 45.23}

     找到最大或最小的N个元素

       使用heapq模块中的两个函数nlargest()和nsmallest()获取最大和最小的N个元素。

    >>> import heapq
    >>> prices = {'ACME': 45.23, 'AAPL': 612.78, 'IBM': 205.55, 'HPQ': 37.20,'FB': 10.75 }
    >>> large3_lst = heapq.nlargest(3,zip(prices.values(),prices.keys()))
    >>> print(large3_lst)
    [(612.78, 'AAPL'), (205.55, 'IBM'), (45.23, 'ACME')]
    >>> small3_lst = heapq.nsmallest(3,zip(prices.values(),prices.keys()))
    >>> print(small3_lst)
    [(10.75, 'FB'), (37.2, 'HPQ'), (45.23, 'ACME')]
  • 相关阅读:
    Docker Machine 管理-管理machine(17)
    Docker Machine 管理-创建machine(16)
    Docker Machine 管理-安装docker-machine(15)
    kvm无人值守安装centos6
    存储-docker volume 生命周期管理(14)
    存储-docker数据共享(13)
    存储-docker存储(12)
    网络-Docker 提供的几种原生网络和自定义网络(11)
    docker容器管理-含静态Ip(10)
    rocketmq单点部署
  • 原文地址:https://www.cnblogs.com/linyfeng/p/11736022.html
Copyright © 2011-2022 走看看