• 《零基础入门学习Python》学习过程笔记【25,26字典】


    dict ['dɪkt]  
      dictionary 字典

    dict对象的keys() values() items() 返回的类型都不是列表或元组类型...在使用时除了把它们强制转换为列表或元组类型,还可以直接用for in遍历得到的东西..


    字典中项的顺序是任意的(系统有它自己的排列方式,这种规则我们看不懂)我们只要用键去得到值就好

    1.如何创建一个字典? {}

    注:字典是键值对,键和值可以为任意类型

    >>> s={1:2,'a':'b',3:'c','c':4}
    >>> s[1]
    2
    >>> s['a']
    'b'
    >>> s[3]
    'c'
    >>> s['c']
    4

    2.如何创建一个空字典?

    >>> dict1={}

    2第二种种创建字典的方式(感觉不太方便,作为了解)

    >>> s=dict((('a',1),('b',2),('c',3)))   
    >>> s
    {'a': 1, 'b': 2, 'c': 3}
    >>> s['a']
    1
    为什么这里dict有两个括号? 因为dict()函数的参数只有一个,这里将
    (('a',1),('b',2),('c',3))
    整体作为一个元组 传进来

    也可以用列表的形式

    >>> c=dict([['a',1],['b',2],['c',3]])
    >>> c
    {'a': 1, 'b': 2, 'c': 3}

    3.第三种创建字典的方式

    注意这里键不用加引号

    >>> haha=dict(a=1,b=2,c=3)
    >>> haha
    {'a': 1, 'b': 2, 'c': 3}

    >>> haha=dict(abc='123',bcd=789)
    >>> haha
    {'abc': '123', 'bcd': 789}


    4.在给字典的指定键赋值时会出现什么样的问题? 如果该键已存在,则更新该键的值。如果该键不存在,则在字典中添加该键值对

    >>> dict1={'a':1,'b':2,'c':3}
    >>> dict1['d']=4
    >>> dict1
    {'a': 1, 'b': 2, 'c': 3, 'd': 4}
    >>> dict1['a']=5
    >>> dict1
    {'a': 5, 'b': 2, 'c': 3, 'd': 4}

    5.字典类对象的方法fromkeys()的作用?为指定键(一个或多个),提供相同的值。当不提供值时,默认设置为None

    注:fromkeys实际上是创建了一个新的字典


    >>> dict2={}
    
    >>> dict2.fromkeys(('a','b','c'))
    {'a': None, 'b': None, 'c': None}

    >>> dict3={}
    >>> dict3.fromkeys(('a','b','c'),1)
    {'a': 1, 'b': 1, 'c': 1}
    

    >>> dict4={'a':1,'b':2,'c':3,'d':4}     #可见并不是更新键值,而是创建了新的字典
    >>> dict4.fromkeys(('a','b'),10)
    {'a': 10, 'b': 10}   

    >>> dict5={}
    >>> dict5.fromkeys(range(1,11),'haha')
    {1: 'haha', 2: 'haha', 3: 'haha', 4: 'haha', 5: 'haha', 6: 'haha', 7: 'haha', 8: 'haha', 9: 'haha', 10: 'haha'}
    >>> dict5
    {}   #可见并不是更新键值,而是创建了新的字典


    5.fromkeys()结合range()产生键?

    >>> dict5={}
    >>> dict5.fromkeys(range(1,11),'haha')
    {1: 'haha', 2: 'haha', 3: 'haha', 4: 'haha', 5: 'haha', 6: 'haha', 7: 'haha', 8: 'haha', 9: 'haha', 10: 'haha'}


    6.如何得到字典的所有键? dict类对象.keys()

    注:键序列的类型为dict_keys类型..不是列表或者元组...但可以用强制转换成列表或元组

    >>> dict1={}
    >>> dict2=dict1.fromkeys(range(1,11),'hh')
    >>> dict2
    {1: 'hh', 2: 'hh', 3: 'hh', 4: 'hh', 5: 'hh', 6: 'hh', 7: 'hh', 8: 'hh', 9: 'hh', 10: 'hh'}

    >>> dict1
    {}
    >>> dict2.keys()
    dict_keys([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
    >>> print(dict2.keys())
    dict_keys([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
    >>> type(dict2.keys())
    <class 'dict_keys'>
    >>> list1=list(dict2.keys())
    >>> list1
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    >>> tuple1=tuple(dict2.keys())
    >>> tuple1
    (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

    7.如何得到字典的所有键对应的值? dict类对象.values()
    >>> dict2={1:'a',2:'b',3:'c',4:'d'}
    >>> dict2.values()
    dict_values(['a', 'b', 'c', 'd'])
    >>> type(dict2.values())
    <class 'dict_values'>

    >>> list2=list(dict2.values())
    >>> list2
    ['a', 'b', 'c', 'd']
    >>> tuple2=tuple(dict2.values())
    >>> tuple2
    ('a', 'b', 'c', 'd')

    8.如何得到字典的每个项?dict对象.items()

    >>> a={'a':1,'b':2,'c':3,'d':4}
    >>> c=a.items()
    >>> type(c)
    <class 'dict_items'>
    >>> print(c)
    dict_items([('a', 1), ('b', 2), ('c', 3), ('d', 4)])
    >>> c=list(c)
    >>> print(c)
    [('a', 1), ('b', 2), ('c', 3), ('d', 4)]

    9.直接访问字典中不存在的项会发生什么?会报错

    >>> dict1={1:'a',2:'b',3:'c'}
    >>> dict1[4]
    Traceback (most recent call last):
      File "<pyshell#157>", line 1, in <module>
        dict1[4]
    KeyError: 4

    10.如何在访问字典中不存在的相时不报错?而是什么也不返回  dict类对象的get()方法

    >>> dict1
    {1: 'a', 2: 'b', 3: 'c'}
    >>> dict1.get(4)  #这里什么也没返回
    >>> print(dict1.get(4)) 
    None  #其实返回的是None
    >>> dict1
    {1: 'a', 2: 'b', 3: 'c'} #该字典本身并没有改变
    该方法还有一参数,这个参数会在该键不存在时被打印出来

    >>> dict1
    {1: 'a', 2: 'b', 3: 'c'}
    >>> dict1.get(4,"没有这哥键哦!")
    '没有这哥键哦!'

    11.如何查看字典的键是否有一个元素? in操作符  (此方法不能用于查看值)

    {1: 'a', 2: 'b', 3: 'c'}
    >>> 1 in dict1
    True
    >>> 'a' in dict1
    False

    12.如何清空字典?dict类对象.clear()

    >>> dict1
    {1: 'a', 2: 'b', 3: 'c'}
    >>> dict1.clear()
    >>> dict1
    {}

    13.用{}和clear()容易出现错误的一个问题

    >>> a={"你好":"少年"}
    >>> b=a
    >>> a={}
    >>> b
    {'你好': '少年'}
    为什么b没有变成{}??因为这实际上是重新创建了一个字典,并让a的标签贴在上面。此时b还是贴在
    {"你好":"少年"}上面没变
    如何在将a清空时,b也随之清空?

    >>> a={"牧羊少年":"A"}
    >>> b=a
    >>> a.clear()
    >>> a
    {}
    >>> b
    {}
    因为这是对a本身进行操作的


    14.如何查看一个变量(对象)的地址? 函数:id()

    >>> a=1
    >>> id(a)
    1896765712

    15.dict对象的copy()函数 

    注:copy()是浅拷贝 所谓浅拷贝就是东西虽然一样,但是地址不一样  举个栗子:

    >>> dict1={1:'你的名字',2:'霍尔的移动城堡'}
    >>> dict2=dict1
    >>> dict3=dict1.copy()
    >>> dict2
    {1: '你的名字', 2: '霍尔的移动城堡'}
    >>> dict3
    {1: '你的名字', 2: '霍尔的移动城堡'}
    >>> id(dict1)
    65876296
    >>> id(dict2)
    65876296
    >>> id(dict3)
    65878416

    16.如何删除字典中给定键所在的键值对,并返回这个键所对应的值?   dict对象的pop()方法

    >>> dict1={1:"地狱少女",2:"死亡笔记"}
    >>> dict1.pop(1)
    '地狱少女'
    >>> dict1
    {2: '死亡笔记'}
    >>> dict1.pop(2)
    '死亡笔记'
    >>> dict1
    {}

    17如何随机的删除典中的一项(一对键值对),并返回这个键值对 ?     dict类对象.popitem()方法

      

    >>> dict2={1:'只有花知晓',2:"鸣鸟不飞"}
    >>> dict2[3]="J的故事"
    >>> dict2
    {1: '只有花知晓', 2: '鸣鸟不飞', 3: 'J的故事'}
    >>> dict2.popitem()
    (1, '只有花知晓')
    >>> dict2
    {2: '鸣鸟不飞', 3: 'J的故事'}
    >>> dict2.popitem()
    (2, '鸣鸟不飞')
    >>> dict2
    {3: 'J的故事'}
    >>> dict2.popitem()
    (3, 'J的故事')
    >>> dict2
    {}


    18.如何在字典中添加一个键值对?dict类对象的setdefault()方法  (用这种方法还不如直接用dict[键]=值,此处只是做一个了解,为了能看懂别人写的代码)

    >>> dict1={1:'神探夏洛特',2:"大侦探福尔摩斯"}
    >>> dict1.setdefault(3,"花生")
    '花生'
    >>> dict1
    {1: '神探夏洛特', 2: '大侦探福尔摩斯', 3: '花生'}

    当第二个参数为空时,默认设置为None
    >>> dict1
    {1: '神探夏洛特', 2: '大侦探福尔摩斯', 3: '花生'}
    >>> dict1.setdefault(4)
    >>> dict1
    {1: '神探夏洛特', 2: '大侦探福尔摩斯', 3: '花生', 4: None}

    19.如何将一个字典中的键值对,添加到另一个字典用?   dict类对象的update()方法,可以理解成用一个字典去更新另一个字典

    >>> dict1={1:'a',2:'b'}
    >>> dict2={3:'c',4:'d'}
    >>> dict1.update(dict2)
    >>> dict1
    {1: 'a', 2: 'b', 3: 'c', 4: 'd'}
    >>> dict2
    {3: 'c', 4: 'd'}











  • 相关阅读:
    中国字实现——最大双向匹配
    [Nuxt] Build a Vue.js Form then use Vuex Actions to Post to an API in Nuxt
    [Nuxt] Build a Navigation Component in Vue.js and Use in a Nuxt Layout
    [Nuxt] Navigate with nuxt-link and Customize isClient Behavior in Nuxt and Vue.js
    [Nuxt] Load Data from APIs with Nuxt and Vuex
    [Nuxt] Add Arrays of Data to the Vuex Store and Display Them in Vue.js Templates
    [Nuxt] Add CSS Libraries to Nuxt
    [Nuxt] Update Vuex State with Mutations and MapMutations in Vue.js
    [Nuxt] Setup a "Hello World" Server-Rendered Vue.js Application with the Vue-CLI and Nuxt
    [TypeScript] Define a function type
  • 原文地址:https://www.cnblogs.com/iamjuruo/p/7470896.html
Copyright © 2020-2023  润新知