zoukankan      html  css  js  c++  java
  • python学习笔记之--字典

    字典以键值对的形式存在,即一个key对应一个value

    定义:d={}

             d = {key1 : value1, key2 : value2 }

    键必须是唯一的,且为不可变类型(如字符串,数字或元组),可变类型不能作为字典的key

    值可以是任何数据类型


    >>> type(d)
    <class 'dict'>
    >>> isinstance(d,dict)
    True

    #增

    >>> d={}
    >>> d["a"]=1  #字典赋值,字符串作为key
    >>> d
    {'a': 1}
    >>> d[[1]]=2   #列表作为key,报错
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    TypeError: unhashable type: 'list'
    >>>

    注意:list 不使用 hash 值进行索引,故其对所存储元素没有可哈希的要求;set / dict 使用 hash 值进行索引,也即其要求欲存储的元素有可哈希的要求。Python不支持dict的key为list或dict类型,因为list和dict类型是unhashable(不可哈希)的。

    >>> d[f]=0   #任意字母作为key,报错
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    NameError: name 'f' is not defined
    >>> d[(1)]=4   #元祖作为key
    >>> d
    {'a': 1, 1: 4}

    >>> d
    {'a': 1}
    >>> d.keys()
    dict_keys(['a'])
    >>> d.values()
    dict_values([1])

    #改

    >>> d[1]="abc"  #增  key 和value  key为不可变类型
    >>> d
    {1: 'abc'}

    >>> d[1]=66 #key相同时原来的值会被覆盖掉
    >>> d
    {1: 66}
    >>>

    #如果不想被覆盖,可以判断key是否在字典中,然后在操作

     >>> "1" in d

    True

    >>> "1" in d.keys()
    True
    >>>

    >>> d=dict(a=1,b=2)#另一种方式生成字典
    >>> d
    {'a': 1, 'b': 2}
    >>>

     #查:可以按key来查,也可以遍历来查

    #访问字典里的值,把相应的键放入到方括号中

    >>> d={'a':1,'b':2,'c':3}
    >>> d['a']
    1
    >>> d[1]   #字典不是有序的,不能以下标来访问里面的值,否则报错
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    KeyError: 1

    #遍历字典的key的两种方式

    >>> d={'a':1,'b':2}

    >>> for i in d:
    ...     print(i)
    ...
    a
    b


    >>> for i in d.keys():
    ...     print(i)
    ...
    a
    b
    >>>

    #遍历values的方式

    >>> for i in d.values():
    ...     print(i)
    ...
    1
    2
    >>>

    #同时遍历key和values

    >>> for k,v in d.items():
    ...     print(k,":",v)
    ...
    a : 1
    b : 2
    >>>

    #删:能删单一的元素也能清空字典

    >>> d
    {'a': 1, 'b': 2, 'c': 3}
    >>> del d['a']    #删除键‘a’
    >>> d
    {'b': 2, 'c': 3}
    >>> d.clear()   #清空字典
    >>> d
    {}
    >>> del d   #删除字典
    >>> d
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    NameError: name 'd' is not defined

    #排序

    >>> user={"user3":"a","user2":"c","user1":"b"}
    >>> user.items()
    dict_items([('user3', 'a'), ('user2', 'c'), ('user1', 'b')])
    >>> sorted(user.items(),key=lambda e:e[0],reverse=False)
    [('user1', 'b'), ('user2', 'c'), ('user3', 'a')]
    >>> a=sorted(user.items(),key=lambda e:e[0],reverse=False)
    >>> a[0]
    ('user1', 'b')
    >>>

    #其他常用内置函数

    >>> d.get("b","100")
    '100'
    >>> d[100]
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    KeyError: 100
    >>> d.get("b","100")
    '100'

    >>> zip([1,2,3],[4,5,6])
    <zip object at 0x00000000028C9908>
    >>> list(zip([1,2,3],[4,5,6]))
    [(1, 4), (2, 5), (3, 6)]

    >>> dict(zip([1,2,3],[4,5,6]))
    {1: 4, 2: 5, 3: 6}

    >>> dict([(1,2),(3,4)])
    {1: 2, 3: 4}

    >>> d=d.fromkeys([1,2,3],"a")
    >>> d
    {1: 'a', 2: 'a', 3: 'a'}
    >>> d=d.fromkeys([1,2,3])
    >>> d
    {1: None, 2: None, 3: None}

    >>> d=dict.fromkeys([1,2,3])
    >>> d
    {1: None, 2: None, 3: None}

    >>> d
    {1: None, 2: None}
    >>> d.update({1:100})
    >>> d
    {1: 100, 2: None}
    >>> d.update({100:100})
    >>> d
    {1: 100, 2: None, 100: 100}

    >>> d={1:2,3:4,5:6}
    >>> d.pop(1)
    2
    >>> d.pop(1,100)
    100

    >>> d.popitem()
    (100, 100)
    >>> d.popitem()
    (2, None)
    >>> d.popitem()
    (1, 100)

  • 相关阅读:
    Nubia Z5S官方4.4 UI2.0音频Audio部分简单分析(也适用于其它8974/8064机型)以及降低破音出现几率的方法
    import MySQLdb UserWarning
    Visual Studio 2013 Update2
    cocos2d 重写顶点着色语言
    tomcat之组成结构
    4、Android Activity的生命周期 Activity的生命周期
    学习中遇到的c++问题,持续更新
    Android开发之发送邮件功能的实现(源码分享)
    Java 类型, Hibernate 映射类型及 SQL 类型之间的相应关系
    QT内label控件通过opencv显示图像
  • 原文地址:https://www.cnblogs.com/wenm1128/p/11610302.html
Copyright © 2011-2022 走看看