zoukankan      html  css  js  c++  java
  • 字典

    字典:是python中唯一一个映射的数据类型

    1、字典是无序的

    2、字典中的数据之间的关联性强。

    dic={'name':'alix','age':16,'job':'teacher'}
    dic1={'py8期':['alix','ritian'],'py6期':['张三','李四','王二麻子']}
    print(dic)
    print(dic1['py8期'][0])
    
    # {'name': 'alix', 'age': 16, 'job': 'teacher'}
    # alix

    3、键值对。dic(键:值)   其中字典的键必须是可哈希的(即为不可变的数据类型:字符串,数字,布尔值,元组);不可哈希(即可变的数据类型:列表,字典,set)

    dic={'name':'alix',[1,2,3]:'dhsh'}
    print(dic)
    
       # dic={'name':'alix',[1,2,3]:'dhsh'}
    #TypeError: unhashable type: 'list'
    #由于dic中有键为列表形式,在输出dic时就会报错

    4、键是唯一的。

    dic={'name':'alix','age':16,'job':'teacher','name':'wusir'}
    print(dic)
    #{'name': 'wusir', 'age': 16, 'job': 'teacher'}

    当有多个相同的键时,之后出现一次,且是随机输出的(虽然我的电脑重来就没有随机输出过)。

    字典的增

    1、直接加上字典的键,然后赋值添加到dic中。

    dic={'name':'alix','age':39,'job':'teacher'}
    dic['weight']=85
    print(dic)
    
    #{'name': 'alix', 'age': 39, 'job': 'teacher', 'weight': 85}
    #此时是在dic中增加一个没有的键,就是直接增加
    dic={'name':'alix','age':39,'job':'teacher'}
    dic['name']='jinxin'
    print(dic)
    #{'name': 'jinxin', 'age': 39, 'job': 'teacher'}
    #此时是在dic中增加一个本来就有的键值对,则原有的键值对的值就会被覆盖

    2、使用setdefault()

    dic={'name':'alix','age':39,'job':'teacher'}
    dic.setdefault('jin')
    print(dic)
    #{'name': 'alix', 'age': 39, 'job': 'teacher', 'jin': None}
    #此时在添加键值对时只输入了键,没有输入值,则输出时键值返回为None
    dic={'name':'alix','age':39,'job':'teacher'}
    dic.setdefault('jin','没有返回值')
    print(dic)
    #{'name': 'alix', 'age': 39, 'job': 'teacher', 'jin': '没有返回值'}
    dic={'name':'alix','age':39,'job':'teacher'}
    dic.setdefault('name','李四')
    print(dic)
    #{'name': 'alix', 'age': 39, 'job': 'teacher'}
    #添加的name在dic中本来就有,则不会对原dic进行改变。

    字典的删

    1、pop按照键去删,返回删除的值,如果没有就会报错dic.pop('hsjh')

    dic={'数字':[1,2,3],'字符':['a','v','x']}
    print(dic.pop('数字'))
    print(dic.pop('jdhkjdh','没有不报错'))
    
    # [1, 2, 3]
    # 没有不报错
    
    dic={'数字':[1,2,3],'字符':['a','v','x']}
    print(dic.pop('jhjksh'))
    
    #     print(dic.pop('jhjksh'))
    # KeyError: 'jhjksh'

    2、popitem()随机删除

    dic={'name':'taibai','age':'67','job':''}
    dic.popitem()
    print(dic)
    
    #{'name': 'taibai', 'age': '67'}

    3、del 删除

    dic={'name':'taibai','age':'67','job':''}
    del dic['name']
    print(dic)
    #{'age': '67', 'job': '无'}

    如果键不存在的话就会报错

    dic={'name':'taibai','age':'67','job':''}
    del dic['sex']
    print(dic)
    #     del dic['sex']
    # KeyError: 'sex'

    4、clear()清除字典:删除的是字典中的键值对,将字典变成空的。

    dic={'name':'taibai','age':'67','job':''}
    dic.clear()
    print(dic)
    #{}

    字典的改

    1、直接将字典中的内容通过键找出了,然后改变值

    dic={'name':'taibai','age':'67','job':''}
    dic['name']='jinxin'
    print(dic)
    #{'name': 'jinxin', 'age': '67', 'job': '无'}

    2、update():对两个dic进行操作,如下例所示,是将dic1更新到dic中,在两个中都有name,在进行update()操作之后,dic1中name对应的值将dic中的name值覆盖,在dic中没有,但在dic1中有的键值对,都会自动添加到dic中。dic1不会发生改变。

    dic={'name':'taibai','age':'67','job':''}
    dic1={'name':'tailiang','hobby':''}
    dic.update(dic1)
    print(dic)
    #{'name': 'tailiang', 'age': '67', 'job': '无', 'hobby': '女'}

    字典的查

    1、通过字典的键查找对应的值

    dic={'name':'taibai','age':'67','job':''}
    print(dic['name'])
    #taibai

    如果键值对不存在就会报错

    dic={'name':'taibai','age':'67','job':''}
    print(dic['hskj'])
    #    print(dic['hskj'])
    #KeyError: 'hskj'

    2、get():当查找的键不存在时不会报错,但会返回None。也可以自己设置返回值。

    dic={'name':'taibai','age':'67','job':''}
    print(dic.get('name'))
    print(dic.get('hdjhs'))
    print(dic.get('hsgd','不存在这个键'))
    # taibai
    # None
    #不存在这个键

    3、只查找字典的key。且发现key的类型是dict_keys型。

    dic={'name':'taibai','age':'67','job':''}
    print(dic.keys(),type(dic.keys()))
    #dict_keys(['name', 'age', 'job']) <class 'dict_keys'>
    dic={'name':'taibai','age':'67','job':''}
    for key in dic.keys():
        print(key)
    # name
    # age
    # job

    4、只查找字典的value。且发现value的类型是dict_value型。

    dic={'name':'taibai','age':'67','job':''}
    print(dic.values(),type(dic.values()))
    #dict_values(['taibai', '67', '无']) <class 'dict_values'>
    dic={'name':'taibai','age':'67','job':''}
    for value in dic.values():
        print(value)
    # taibai
    # 67
    #

    item():以key和value对应的形式输出字典中的键值对。

    dic={'name':'taibai','age':'67','job':''}
    for key,value in dic.items():
        print(key,value)
    # name taibai
    # age 67
    # job 无

    此时以元组的形式输出各键值对。

    dic={'name':'taibai','age':'67','job':''}
    for i in dic.items():
        print(i)
    
    # ('name', 'taibai')
    # ('age', '67')
    # ('job', '无')

    分别接收

    a,b=[1,2]
    print(a,b)
    #1 2
    c,d=(3,4)
    print(c,d)
    #3 4
    #交换a,b的值
    a,b=(3,4)
    b,a=a,b
    print(a,b)
    #4 3
    dic={'name':['alex',2,3,5],'job':'teacher'}
    dic['name'][0]=dic['name'][0].capitalize()
    print(dic)
    #{'name': ['Alex', 2, 3, 5], 'job': 'teacher'}
  • 相关阅读:
    Codeforces Round #270 solution
    Codeforces Round #269 (Div. 2) solution
    Codeforces Round #268 (Div. 1) solution(upd div 1 C,div 2 A, B
    Codeforces Round #267 (Div. 2) solution
    Unity 绘制多边形
    DOTween 模仿NGUI Tween
    图像混合模式 正片叠底、滤色、叠加
    一只羊的四个月可以生一只小羊,小羊四个月后又可以生一只小羊 问50个月后有多少只羊(羊不会死)
    Unity CCTween UGUI 动画插件
    Unity UGUI 使用 CCTween 实现 打字效果
  • 原文地址:https://www.cnblogs.com/hzhcdhm/p/7729684.html
Copyright © 2011-2022 走看看