Dict_字典

字典,dict。Python中最重要的数据类型 ^_^

eg.

1 dict1 = {"name":"python","age":"29"}

1、dict格式:

  {"key":"value",}

  一个key(键)对应一个value(值),组成一对映射关系,将多个映射关系用花括号框起来,用逗号分隔,就组成了dict字典。

2、dict特性:

  1)键唯一:

    不同于list或tuple类型,dict不使用索引取值,而是以key为取值参数;

    这个特性就要求key必须唯一。

    举个栗子(自己理解):

      一个班中30多人,可以有两个或多个名字一样的,但是学号却肯定不同,而这个学号就是唯一识别码,就是key。

  2)无序:

    承接第1个特性,既然不是以索引取值,那么,每组映射关系所在的位置就无关紧要。

    举个栗子(自己理解):

      在一个班中的某一组(列),有10名学生(假设没有同名),编号分别为0-9,那么:

        在list中,根据索引(即0-9)来定位学生:坐在编号为8的那个起来下;

        在dic中,不用这个麻烦,直接就是:那个谁谁谁起来下。

3、dict的创建:

  1)方法1(直接赋值,常用):

1 dict1 = {"name":"python","paiming":1}  

  2)方法2(利用工厂函数,不常用):

1 dict2 = dict((("name","python"),))

  或

1 dict3 = dict({"name":"python"})    # 不如直接赋值

4、dict的操作(增删改查):

  1)增: 

 1 #(1)
 2 dict4 ={"name":"python"}    # 创建一个dict
 3 dict4["age"] = 18                #添加一组映射(key-value)
 4 print(dict4)                        #结果{"name":"python","age":18}
 5
 6 #(2)
 7 dict5 = {"name":"python"}
 8 dict5.setdefault("age",19)        #此方法,如果key已有,不更新,否则,添加一组。
 9 print(dict5)                            #结果{"name":"python","age":19}
10 ‘‘‘
11 setdefault:
12     有返回值,
13     如果dict中有相同的key,不改变dict,返回dict中相应的value;
14     如果dict中没有相同的key,则会先加入一组key:value,并返回value。
15 ‘‘‘

  2)查:

    根据key取value,略。

    取dict所有的key: 

1 dict6 = {"name":"python","age":19}
2 print(dcit6.keys())        #打印所有key。结果,dict_keys(["name","age"])。
3 print(type(dict6.keys())) #所有key的结果并不是list,而是dict_keys类型(python3)。
4 print(list(dict6.keys()))    #这里将结果转换成一个list。
5
6 print(dict6.values)    #打印所有value。
7
8 print(list(dict6.items()))    # 打印所有key-value。结果[("name","python"),("age",19)]

  3)改:

1 dict7 = {"name":"python","age":19}
2
3 #(1)单项修改
4 dict7["age"] = 20
5
6 #(2)批量修改
7 dict8 = {"age":21,"islan":True}
8 dict7.update(dict8)
9 print(dict7)    #结果,{"name":"python","age":21,"islan":True},有相同key,会覆盖

  4)删: 

 1 dict8 = {"name":"python","age":19,"islan":True}
 2
 3 #(1)单个删除
 4 # del dict8["name"]   #删除了一组映射关系(key-value)
 5 # print(dict8)    #结果 {"age":19,"islan":True}
 6
 7 #(2)清空
 8 # dict8.clear()   #虽然clear能清空dict,但dict本身还是存在的
 9 # print(dict8)    #结果 {}
10
11 #(3)单个删除2
12 # dict8.pop("age")    #pop方法有返回值,就是被删除的key-value中的value.
13 # print(dict8)        #结果 {"name":"python","islan":True}
14
15 #(4)不靠谱删除
16 # dict8.popitem()      #dict是无序的,所以本方法是随机删除一组映射(key-value),没啥用啊。
17 # print(dict8)
18
19 #(5)删除dict
20 # del dict8   #删除整个dict,包括dict本身
21 # print(dict8)    #会报错,因为dict8本身已经被删除,内存里没有这个dict了。

5、dict其他操作

  1)创建dict

 1 dict9 = dict.fromkeys(["key1","key2","key3"],"value")   #不常用
 2 print(dict9)     #结果 {‘key1‘: ‘value‘, ‘key2‘: ‘value‘, ‘key3‘: ‘value‘}
 3 dict9["key1"] = "value1"
 4 print(dict9)    #value不为list,没问题。结果 {‘key1‘: ‘value1‘, ‘key2‘: ‘value‘, ‘key3‘: ‘value‘}
 5
 6 #该种方法问题:
 7 dict10 = dict.fromkeys(["key1","key2","key3"],["value1","value2"])
 8 print(dict10)   #结果{‘key1‘: ["value1","value2"], ‘key2‘: ["value1","value2"], ‘key3‘: ["value1","value2"]}
 9 dict10["key1"][1] = "value3"
10 print(dict10)
11 ‘‘‘
12 期望结果:
13     {‘key1‘: ["value1","value3"], ‘key2‘: ["value1","value2"], ‘key3‘: ["value1","value2"]}
14 实际结果:
15     {‘key1‘: ["value1","value3"], ‘key2‘: ["value1","value3"], ‘key3‘: ["value1","value3"]}
16
17 ‘‘‘

  2)dict嵌套

 1 #嵌套(dict-dict-list)
 2 dict11 = {
 3     "1st":{
 4         "python":["脚本语言","很流行"]
 5     },
 6     "2nd":{
 7         "C":["高级语言"]
 8     },
 9     "3rd":{
10         "java":["高级语言","也很流行"]
11     },
12 }
13
14 #增删改查,以修改为例。
15 # 修改python的“脚本语言”
16 dict11["1st"]["python"][1] = "编程语言"
17 print(dict11)   #{‘1st‘: {‘python‘: [‘脚本语言‘, ‘编程语言‘]}, ‘2nd‘: {‘C‘: [‘高级语言‘]}, ‘3rd‘: {‘java‘: [‘高级语言‘, ‘也很流行‘]}}

  3)排序sorted

 1 #排序
 2 dict11 = {"islan":"True","age":"18","1":"haha"}
 3 print(sorted(dict11))   #对key进行排序,结果 [‘1‘, ‘age‘, ‘islan‘]
 4 print(sorted(dict11.values()))  #对value进行排序,结果[‘18‘, ‘True‘, ‘haha‘]
 5 ‘‘‘
 6 注意,dict11中的key "1"不能为1(即要排序的话,类型得一致),否则排序时会报错:
 7     TypeError: ‘<‘ not supported between instances of ‘int‘ and ‘str‘。
 8
 9 注意,dict没有内置sort方法,所以这个不能用:dict.sort()
10 ‘‘‘

  4)dict的遍历

 1 #遍历
 2 dict12 = {"name":"python","age":"19"}
 3     #(1)推荐用法,效率高。
 4 for i in dict12:        #i遍历的是dict中的key
 5     print(i,dict12[i])
 6 ‘‘‘
 7 结果1:
 8 name python
 9 age 19
10 ‘‘‘
11     #(2)有转换,牺牲了部分效率。
12 for items in dict12.items():    #items遍历的就是dict的key-value对。
13     print(items)
14 ‘‘‘
15 结果2:
16 (‘name‘, ‘python‘)
17 (‘age‘, ‘19‘)
18 ‘‘‘
19     #(3)同2
20 for keys,values in dict12.items():
21     print(keys,values)
22 ‘‘‘
23 结果3:
24 name python
25 age 19
26 ‘‘‘
时间: 2024-10-28 23:30:47

Dict_字典的相关文章

python--15 字典:当索引不好用

字典是python唯一的影射类型 hash >>> brand = ['李宁', '耐克', '阿迪达斯'] >>> slogan = ['一切皆有可能', 'Just do it','Impossible is nothing'] >>> print('李宁的口号是:',slogan[brand.index('李宁')]) 李宁的口号是: 一切皆有可能 字典不是序列类型 ,是映射类型 字符串 列表 元组是序列类型 创建和访问索引   标志性符号--花

如何通过字典表来获取下拉数据的实现

①在web.xml中添加监听,启动的时候初始化. <!--Web ApplicationContext 载入,继承处Spring的ApplicationContextListener --> <listener> <listener-class>cn.sccl.common.web.StartupListener</listener-class> </listener> ②我们需要在启动Tomcat的时候,初始化bizCode数据 package

字典及其方法

常用操作: 索引 get,has_key, 新增 setdefalt,update, 删除 pop,popitem,clear 键.值.键值对 items,values,values 循环  for i in info: print(i,info[i])for k,v in info.items(): print(k,v) 长度 len 字典方法 dic.clear() #删除字典中所有项 dic.copy() #复制列表中所有项 dic.fromkeys(S[,v]) #新建字典,键为S,值为

SQL Server2005+、MySQL、Oracle 数据库字典生成工具

之前找的数据库字典生成工具基本上都依赖于 Office Com 组件,在不安装 Office的情况下无法使用.怒,于是自己用C# 写了一个. 特征如下:    一.支持的数据库 MS SQL Server 2005+.My Sql.Oracle    二.支持的文档类型 Html.CHM.Docx    三.无需安装Office即可生成 Docx 格式的Word文件    四.基于 .net framework 3.5 框架,电脑上需要安装 .net framework 3.5.       

python基础:python循环、三元运算、字典、文件操作

目录: python循环 三元运算 字符串 字典 文件操作基础 一.python编程 在面向过程式编程语言的执行流程中包含: 顺序执行 选择执行 循环执行 if是条件判断语句:if的执行流程属于选择执行:if语句有三种格式,如下: 在多分支的if表达式中,即使多个条件同时为真,也只会执行一个,首先测试为真: 选择执行 单分支的if语句 if CONDITION: 条件为真分支 双分支的if语句 if CONDITION 条件为真分支 else 条件不满足时分支 多分支的if语句 if CONDI

按照字典排序

按照字典排序, 按照字典的value排序,类似sort -k命令 import operator x = {1:2,3:4, 4:3, 2:1, 0:0} sorted x =sorted(x.iteritems(), key = operator.itemgetter(1)) 0表示根据key排序,1表示根据value排序 In [33]: sorted(x.iteritems(),key=operator.itemgetter(0))                             

hdu 1251 统计难题(字典树)

Problem Description Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀). Input 输入数据的第一部分是一张单词表,每行一个单词,单词的长度不超过10,它们代表的是老师交给Ignatius统计的单词,一个空行代表单词表的结束.第二部分是一连串的提问,每行一个提问,每个提问都是一个字符串. 注意:本题只有一组测试数据,处理到文件结束. Output 对于每个提

bing的简单英文字典工具

今天看到园友心白水撰写的<简单翻译工具--必应字典第三方API使用方法>,感觉很不错,所以用Python也写了一个.源码如下: 1 import urllib.request 2 import json 3 4 serviceurl='http://xtk.azurewebsites.net/BingDictService.aspx?Word=' 5 6 while True: 7 word = input('请输入英文单词: ') 8 if len(word) < 1 : 9 brea

无线安全专题_破解篇03--打造个人字典

上一篇讲解了如何通过Kali破解Pin码,今天继续无线安全专题破解篇的第三讲:打造个人字典.通过第一课,我们知道想要破解WPA加密,需要一个强大的字典.字典的强大直接决定了破解的可能性,废话不多说,咱们就学习一下怎么使用kali中的工具生打造个人字典.  一.crunsh工具介绍 今天主要说的是crunsh这款工具,专门用来生成字典. 命令参数: -b              #体积大小,比如-b 20mib 或者 -b 20kib -c              #密码个数(行数),比如80