字典(dictionary)

python中唯一的映射类型,采用键值对(key-value)的形式储存数据,python对key进行哈希函数运算,所以key值必须是可哈希的,可哈希表示key必须是不可变的,如:数字、字符串、元组,元组的值value可以为所有类型的数据。系统根据哈西的计算结果储存value的地址,所以字典是无序的。
相对于列表,字典是通过键来存取,二列表是通过偏移(下标)来存取。
方便理解:元组相当于一个大旅馆,旅馆中有很多很多的房间,存数据相当于房间中住人或者放各种东西,key相当于门牌号,这个门牌号是在旅馆不能动且一定唯一,因为门牌号一改,整个旅馆的房间就乱了。房间中的东西相当于value,每个房间中可以随意的放任何种类的东西,住人啊,放行李啊,电器什么的,就相当于value可以是任何种类的数据。这样旅馆中门牌号可以是无序的,因为每个房间和门牌号是一一对应的,所以只要找对门牌号就可以找到指定房间。

字典的创建

dic1={'name':'cai','game':"lol",'age':8}
print(dic1)
格式:d = {key1 : value1, key2 : value2 }每一个key对应一个value。

增删改查

增加

dic2={'name':"li",'hobby':"money"}
dic2['age']=8#添加'age':8
print(dic2) dic2.setdefault('age',24)#键存在,不改动,返回键对应的原值;键不存在,在字典中添加键和值,并返回新添加的值。

两种方式,一种用d[key]=value直接添加新的值,一种用setdefault方法。若不想影响字典中原有数据,单纯的添加setdafult方法相对安全;d[key]=value若字典中原来已有该key,将会把value覆盖更新。

查找

a=dic2['age']#把'age'对应的值赋给a
print(a)
print(dic2.keys())#输出所有的键(key)
print(dic2.values())#输出所有的值(value)
print(dic2.items())#以元组方式输出所有键-值(key-value)

查找很简单,d[key]可直接获得键对应的值,并可用自带方法输出相应数据。

修改

dic2['age']=22
print(dic2)

d[key]=value,有则改之,无则添加。

另有update方法:

dic2.update(dic1)
print(dic2)

该方法会将dic1中的所有键值添加到dic2,若dic2中有和dic1中的键相同,则dic2中对应的值将会被覆盖。

删除

del dic2['age']
print(dic2)

类似列表,可以用del d[key]删除对应键值。同样也有pop和clear方法:

dic2.pop('age')#删除键age的键和值,返回删除的值
dic1.clear()#清空整个字典
del dic2#删除整个字典

字典的嵌套

既然字典中的value可以是任何类型的数据,那value也可以是字典类型,字典中的字典就是嵌套。举个例子:

dic4={
'文件夹':{
'games':{
'FC':['坦克大战','魂斗罗','超级玛丽'],
'MD':['新光明与黑暗','梦幻之星4千年终结','雪人兄弟'],
'GBA':['口袋妖怪漆黑的魅影','铸剑物语','火焰纹章','超级机器人大战'], }
}
}

我这个dic4按照我电脑的一个文件夹创建。那么字典以内的字典如何查看修改呢。

x=dic4['文件夹']['games']['FC'][1]
print(x)
dic4['文件夹']['games']['FC'][1]='雪人兄弟'
print(dic4)

字典的嵌套类似文件夹,有层级关系。用[]进入一层字典,在下一层再用[]进入再下一层,类推。可以进入任何一层进行访问修改删除等操作。

还有排序函数:

print(sorted(dic4['文件夹']['games']))

可以用sorted函数对子典的一层内容进行排序,可以是key,value,或者key-value.

字典的遍历

可以通过for循环进行对整个字典内数据的获取:

dic5={'name':"li",'hobby':"money"}
for i in dic5:
print(i,dic5[i])
for i,v in dic5.items():
print(i,v)

python数据类型——字典类型的更多相关文章

  1. Python 数据类型--字典类型

    字典 dict 字典是Python的另一种有序的可变数据结构,且可存储任意类型对象. 字典是一种键值对的数据容器,每个键值(key:value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典 ...

  2. Python的字典类型

    Python的字典类型为dict,用{}来表示,字典存放键值对数据,每个键值对用:号分隔,每个键值对之间用,号分隔,其基本格式如下: d = {key1 : value1, key2 : value2 ...

  3. python学习笔记(10)--组合数据类型(字典类型)

    理解映射: 映射是一种键(索引)和值(数据)的对应.字典是键值对的集合,键值之间无序.用大括号表示{},和dict()创建,键值对用冒号:表示. {键:值,键:值,键:值} >>> ...

  4. Python 数据类型--Bytes类型

    一.Bytes类型 在Python3以后,字符串和bytes类型彻底分开了.字符串是以字符为单位进行处理的,bytes类型是以字节为单位处理的. bytes数据类型在所有的操作和使用甚至内置方法上和字 ...

  5. 9 python 数据类型—字典

    字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据.python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可 ...

  6. python中字典类型的使用

    Python字典类型 字典是一种键值对的集合,键值对之间无序 字典类型的定义 采用{}或者dict()来创建字典对象,键值对之间使用:进行分隔. {<键1>:<值1>, < ...

  7. Python:字典类型

    概念 无序的,可变的,键值对集合 定义 方式1 {key1: value1, key2: value2, ......} 方式2 fromkeys(S, v=None) 静态方法:类和对象都可以调用 ...

  8. python数据类型:字典dict常用操作

    字典是Python语言中的映射类型,他是以{}括起来,里面的内容是以键值对的形式储存的: Key: 不可变(可哈希)的数据类型.并且键是唯一的,不重复的. Value:任意数据(int,str,boo ...

  9. Python数据类型-字典

    字典(dict) 字典是key:value形式的一种表达形式,例如在Java中有map,JavaScript中的json,Redis中的hash等等这些形式.字典可以存储任意的对象,也可以是不同的数据 ...

随机推荐

  1. 手机APP中使用history.back()返回没有效果的解决

    样式是一个超链接A标签,通过点击事件来达到返回上一页的效果. 所以通常做饭是把A标签的href写成#,然后onClick事件,刚开始我只是当成一个普通点击事件,然后使用JS进行返回. 写法如下: &l ...

  2. 百度前端技术学院js任务三

    任务地址:http://ife.baidu.com/course/detail/id/98 代码: <!DOCTYPE> <html> <head> <met ...

  3. 高性能JavaScript读书笔记

    零.组织结构 根据引言,作者将全书划分为四个部分: 一.页面加载js的最佳方式(开发前准备) 二.改善js代码的编程技巧(开发中) 三.构建与部署(发布) 四.发布后性能检测与问题追踪(线上问题优化) ...

  4. hdu1698 Just a Hook 线段树

    共有Q个更新,每次更新给更新的区间一个标记,表示该区间是在哪一次被更新,最后统计答案是以最近被更新的值为答案. AC代码: #include<cstdio> const int maxn= ...

  5. BZOJ3223/洛谷P3391 - 文艺平衡树

    BZOJ链接 洛谷链接 题意 模板题啦~2 代码 //文艺平衡树 #include <cstdio> #include <algorithm> using namespace ...

  6. webpack代码分离 ensure 看了还不懂,你打我(转)

    webpack异步加载的原理 webpack ensure相信大家都听过.有人称它为异步加载,也有人说做代码切割,那这 个家伙到底是用来干嘛的?其实说白了,它就是把js模块给独立导出一个.js文件的, ...

  7. Android项目中的换肤总结

    纵观现在各种Android app,其换肤需求可以归为 白天/黑夜主题切换(或者别的名字,通常2套),如同花顺/自选股/天天动听等,UI表现为一个switcher. 多种主题切换,通常为会员特权,如Q ...

  8. R+NLP︱text2vec包——BOW词袋模型做监督式情感标注案例(二,情感标注)

    要学的东西太多,无笔记不能学~~ 欢迎关注公众号,一起分享学习笔记,记录每一颗"贝壳"~ --------------------------- 在之前的开篇提到了text2vec ...

  9. 关于druid的配置说明

    <bean id="stat-filter" class="com.alibaba.druid.filter.stat.StatFilter"> & ...

  10. Android内核解读-应用的安装过程

    前言 我们知道,在android手机上安装一个apk很简单,只要打开apk文件,默认就会弹出安装界面,然后点击确定,经过若干秒后,apk就安装成功了,可是你知道apk的安装过程是什么吗?你知道andr ...