有关于dict(字典)的特性与操作方法

1.字典的特性

语法:

dic = {key1 : value1,key2 : value2,key3 : value3............}

注:字典中key的值不可改变,value的值可以改变;由于字典保存数据使用的是Hash存储方式 故字典无法使用切片方式.

2.字典的操作方法

1.增加

dic = {}

1) dic ["name"] = "伍四六"

#如果字典中没有该key值,则在字典最后加入字典元素,如果存在该key值则会覆盖该key值 所对应的value值

2) dic.setdefault(key , default = None)

#使用此方法时,如果字典中没有过这个key则在字典末尾增加这个字典元素,若key已经存 在则此语句无效

##该方法默认的value值为None,可自行设定value值

2.删除

dic = {"id": 123, "name": 'sylar', "age": 18,"姑姑" : None}

1) dic.pop(key) #删除指定key值与其指定的value值,并返回value值

注:字典中的pop()与列表中的pop()不同,字典中pop()如果不指定key值会报错,而列表中 pop()不指定索引值是默认删除列表最后一个元素

2) del dic[key] #删除指定key值的字典元素

3) dic.popitem() #随机删除一个字典元素,并返回该字典元素

4) dic.clear() #清除字典中所有的元素

3.修改

dic = {"id": 123, "name": 'sylar', "age": 18,"姑姑" : None}

1) 可直接对字典元素的value进行修改

例: dic["姑姑"] = 154

2) dic.update(另一个字典)

#把另一个字典中的内容更新到dic字典中,若key值重复则覆盖其value;若不重复,则新增 字典元素

例:dic = {"id": 123, "name": 'sylar', "age": 18,"姑姑" : None}

dic1 = {"id": 456, "name": "麻花藤", "ok": "wtf"}

dic.update(dic1)

4.查询

dic = {"id": 123, "name": 'sylar', "age": 18,"姑姑" : None}

1) 直接用key去查询

例: print(dic['name']) #得到123

2) dic.get(key) #获取key值的value,如果key不存在,则返回None

5.其他相关操作

dic = {"id": 123, "name": 'sylar', "age": 18,"姑姑" : None}

1) dic.keys()

#输出一个可通过list()转化为列表的代码段,代码段中记录了字典中所有的key值;可通过 for循环直接输出

例: for key in dic.keys()

print(key)

2) dic.values()

#输出一个可通过list()转化为列表的代码段,代码段中记录了字典中所有的value值;可通 过for循环直接输出

例: for value in dic.values()

print(value)

3) dic.item()

#输出一个可通过list()转化为列表的代码段,代码段中记录了字典中所有的字典元素,所有 的字典元素装在tuple(元组)中构成列表的每一个元素;可通过for循环直接输出

例:print(dic.items()) # dict_items([('id', 123), ('name', 'sylar'), ('age',18),("姑姑",None)] 这个东西也是list. 只不过list中装的是tuple

for key, value in dic.items(): # 这个是解构

print(key, value)

6.解构

1) a,b = 1,2 或 (a,b) = (1,2)这类就属于解构

注:解构时要注意数量必须匹配,否则报错

2) 参数解构

#给函数提供实参的时候,可以在集合类型前使用 * 或者 ** ,把集合类型的结构解开,并提 出所有元素为函数提供实参

##非字典类型使用 * 来解构成位置参数

##字典类型使用 ** 来解构成关键字参数

@@@这里注意提取出来的元素数目要与参数的数目一致,不然会报错

例:

def add(x, y): ​ add(4, 5) #正常调用 ​ add((4,5)) #错误调用被当做一个参数 ​ add( * (4,5)) #参数解构 ​ add( * range(1,3)) #与上类似 ​ add( ** {'a' : 5, 'b' : 6}) #解构value ​ add( * {'a' : 5, 'b' : 6}) #解构key

7.字典的嵌套

dic1 = { "name": "汪峰", "age": 18, "wife": { "name": '章子怡', "age": 28 }, "children": ['第一个毛孩子', '第二个毛孩子'], "desc": '峰哥不会告我吧. 没关系. 我想上头条的' }

print(dic1["wife"] ["name"])

print(dic1.get("wife").get("name"))

print(dic1.get("children"))

print(dic1.get("children") [1])

有关于dict(字典)的特性与操作方法的更多相关文章

  1. Python的dict字典结构操作方法学习笔记

    Python的dict字典结构操作方法学习笔记 这篇文章主要介绍了Python的dict字典结构操作方法学习笔记本,字典的操作是Python入门学习中的基础知识,需要的朋友可以参考下 一.字典的基本方 ...

  2. 1.12 dict 字典表

    dict 字典表属于映射分类 dict的声明 >>> #dict类型 是 {}中包含若干个键值对 >>> d = dict() >>> d = { ...

  3. python数据类型之dict(字典)

    dict字典 关注公众号"轻松学编程"了解更多. 1.概述 dict也是一种存储方式,类似于list和tuple,但是,字典采用键-值(key-value)的形式存储. 优点:具有 ...

  4. 数据类型:list列表[]、元祖tuple()、dict字典{}

    List 列表[] 可变的 lst = [1,2,3,4] #改 lst[(元素下标)] = '需要修改的' #通过下表修改 lst[下标:下标] = '需要修改的' #通过范围修改 #加 lst.a ...

  5. Python数据类型的内置函数之tuple(元组),dict(字典),set(集合)

    Python数据类型内置函数 - str(字符串) - list(列表) - tuple(元组) - dict(字典) - set(收集) tuple(元组)的操作 - (count)统计元组中元素出 ...

  6. 列表 list 容器类型数据(str字符串, list列表, tuple元组, set集合, dict字典)--->元组 tuple-->字符串 str

    # ### 列表 list 容器类型数据(str字符串, list列表, tuple元组, set集合, dict字典) # (1)定义一个列表 listvar = [] print(listvar, ...

  7. python的dict()字典数据类型的方法详解以及案例使用

    一.之前的回顾 # int  数字 # str 字符串 # list 列表 # tuple 元组 # dict 字典 字典中最重要的方法 keys() values() items() get upd ...

  8. Python 全栈开发:dict(字典)常用方法操作、dict嵌套

    数据类型的划分:可变数据类型和不可变数据类型. 不可变数据类型(可哈希):元祖.bool.int.str 可变数据类型(不可哈希):list.dict,set(集合) dict(字典): dict(字 ...

  9. [Python] dict字典的浅复制与深复制

    Python中针对dict字典有两种复制: (1)浅复制:利用 copy() 或者 dict() :复制后对原dict的内部子对象(方括号[]内元素)进行操作时,由浅复制得到的dict会受该操作影响 ...

随机推荐

  1. Vue项目优化首屏加载速度

    Vue项目部署上线后经常会发现首屏加载的速度特别慢:那么有那写能做的简单优化呢 一.路由的懒加载 路由懒加载也就是 把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件. 结合 ...

  2. 在Python中利用CVXOPT求解二次规划问题

    工作中需要用到cvxopt,cvxopt安装有坑,大家注意下.1.首先一定要卸载numpy,无论是直接安装的,还是anaconda安装的,主要是必须用whl安装numpy才不会有包的冲突2.二次规划包 ...

  3. 解决Webpack中提示syntax 'classProperties' isn't currently enabled的错误

    当我们使用了一些JavaScript的一些新特性的时候,但是有没有在webpack.config.js里面或者是.babelrc文件中配置相关插件,就可以解决了. error:Support for ...

  4. HDU3336Count the string

    HDU3336Count the string Problem Description It is well known that AekdyCoin is good at string proble ...

  5. JavaScript学习笔记之对象

    目录 1.自定义对象 2.Array 3.Boolean 4.Date 5.Math 6.Number 7.String 8.RegExp 9.Function 10.Event 在 JavaScri ...

  6. 37.分组聚合操作—其他metric

    课程大纲     要学其他的metric(count,avg,max,min,sum) count:bucket,terms,自动就会有一个doc_count,就相当于是count avg:avg a ...

  7. PAT 1100. Mars Numbers

    People on Mars count their numbers with base 13: Zero on Earth is called "tret" on Mars. T ...

  8. 【MariaDB】MariaDB vs MySQL - 特性

    原文链接: https://mariadb.com/kb/en/mariadb-vs-mysql-features/ xiaomo译------ 支持更多的存储引擎 除了标配的MyISAM, BLAC ...

  9. LightOJ 1370 Bi-shoe and Phi-shoe

    /* LightOJ 1370 Bi-shoe and Phi-shoe http://lightoj.com/login_main.php?url=volume_showproblem.php?pr ...

  10. nyoj 309

    #include<stdio.h> #include<stdlib.h> #define N 1100 int c[N]; int main() { int l,n,i,m,a ...