python基础知识——内置数据结构(字典)

    字典是有“键-值”对组成的集合,字典中的“值”通过“键”来引用。“键-值”对之间用逗号隔开,并且被包含在一对花括号中。

1、字典的创建

格式

dictionary_name = {key1 : value1, key2 : value2, ...}

创建空的字典

dictionary_name = {}

例如

dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
print dict

输出:{'s': 'shanghai', 'b': 'beijing', 'g': 'guangzhou', 'w': 'wuhan'}

注意:字典将会按照每个元素的Hashcode值进行排序,而且,字典的“键”是区分大小写的。

2、字典的访问

字典与元组或者列表不同,不是通过索引访问的,而是通过“键”值访问value值的。

格式

value = dictionary_name[key]

例如

#coding:UTF-8
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
print dict

#访问'shanghai'
print dict['s']

3、字典元素的添加和修改

在字典中,只需一条赋值语句就实现了字典元素的添加和修改,所不同的是,若增加的元素在字典中不存在就是添加,若已经存在就是修改。

例如

#coding:UTF-8
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
print dict

#添加{'c' : 'chongqing'}
dict['c'] = 'chongqing'
print dict

#修改'wuhan'为'wuchang'
dict['w'] = 'wuchang'
print dict

4、字典中的常用方法

  1. items方法主要用于实现字典的遍历操作,返回的是由若干元组组成的列表。
#coding:UTF-8  
#使用items()方法遍历字典  
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
  
for (k, v) in dict.items():  
    print 'dict[%s] = ' % k ,v 

输出dict[s] =  shanghai dict[b] =  beijing dict[g] =  guangzhou dict[w] =  wuhan

  1. iteritems方法主要是生成遍历器,用于实现字典的遍历,除此之外还有iterkeys()方法和itervalues()方法。
#coding:UTF-8  
#使用iteritems()方法遍历字典  
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
  
print dict.iteritems()#构造遍历器  
  
for k, v in dict.iteritems():  
    print 'dict[%s] = ' % k , v  
  1. setdefault方法用于创建新的元素并设置默认值。
#coding:UTF-8  
#设置默认值  
dict = {}#空的字典  
  
dict.setdefault('b')#{'b': None}  
print dict  
  
dict['b'] = 'beijing'  
#已经设置了'b'对应的值,再设置默认将无效  
dict.setdefault('b', 'default')  
print dict  
  1. pop方法用于删除指定的key处的值。
#coding:UTF-8  
#删除操作  
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
  
#删除key值为's'处的值  
dict.pop('s')  
  
print dict  
#coding:UTF-8  
#删除操作还有使用内建的方法del()  
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
  
#使用del方法  
del(dict['s'])  
  
print dict 
#coding:UTF-8  
#字典的清空使用clear()方法  
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
  
#清空  
dict.clear()  
  
print dict#空的字典  
  1. get方法用于得到key键处的值。
#coding:UTF-8  
#get()方法  
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
  
print dict.get('s')#shanghai  
  1. keys方法用于返回字典中的key的列表。
#coding:UTF-8  
#keys()方法  
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
  
print dict.keys()#['s', 'b', 'g', 'w']   
  1. values方法用于返回字典中的value的列表。
#coding:UTF-8  
#values()方法  
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
  
print dict.values()#['shanghai', 'beijing', 'guangzhou', 'wuhan'] 
  1. update函数主要实现的是将一个字典中的元素增加到另一个字典中。
#coding:UTF-8  
#update()方法  
dict_1 = {'b' : 'beijing', 's' : 'shanghai'}  
  
dict_2 = {'w' : 'wuhan', 'g' : 'guangzhou'}  
  
dict_1.update(dict_2)  
print dict_1  

注意,若出现dict_2中有dict_1中的键,则会更新。

  1. sorted排序函数。
#coding:UTF-8  
#sorted()方法  
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
  
#按照key排序  
print sorted(dict.items(), key = lambda d: d[0])  
  
#按照value排序  
print sorted(dict.items(), key = lambda d: d[1])  
  1. copy函数实现的是字典的浅拷贝。
#coding:UTF-8  
#copy()方法  
dict_1 = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
  
dict_2 = {'c' : 'chongqing'}  
  
dict_2 = dict_1.copy()  
print dict_2#{'s': 'shanghai', 'b': 'beijing', 'w': 'wuhan', 'g': 'guangzhou'}  

注意:清除了dict_2中原有的元素。浅拷贝是指只拷贝数据不拷贝数据之间的关系,新的数据和旧的数据使用的是同一块内存空间;对应的是深拷贝,既拷贝数据,也拷贝数据之间的关系,新的数据和旧的数据使用的是不同的内存空间。在python中可以使用copy模块来实现对象的深拷贝和浅拷贝,其中的deepcopy()用于深拷贝操作,copy()用于浅拷贝操作。

#coding:UTF-8  
#copy模块  
import copy  
  
dict_1 = {'a' : 'beijing', 'b' : {'s' : 'shanghai', 'w' : 'wuhan'}}  
  
dict_2 = copy.deepcopy(dict_1)#深拷贝  
dict_3 = copy.copy(dict_1)#浅拷贝  
  
dict_2['b']['s'] = 'shenyang'  
print dict_1#{'a': 'beijing', 'b': {'s': 'shanghai', 'w': 'wuhan'}}  
dict_3['b']['s'] = 'shenyang'  
print dict_1#{'a': 'beijing', 'b': {'s': 'shenyang', 'w': 'wuhan'}}  

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏TungHsu

这或许是对小白最友好的python入门了吧——14,遍历字典

同列表元组一样,字典也能够遍历,但是和列表元组不一样的是,字典遍历分三个部分:遍历键值对、遍历键、遍历值 首先我们新建一个字典: score = {"engl...

26430
来自专栏小白的技术客栈

Python运算符

今天开始讲解Python的运算符,这一节比较简单,知识点不多。 上文回顾 今天回顾一下昨天的文章主要讲了哪些知识点: Python是一门动态的强类型语言; 变量...

54380
来自专栏vue学习

JSON

json是一种数据格式,不是一种编程语言。 json是一种轻量级的数据格式,可以简化表示复杂数据结构的工作量。

16630
来自专栏软件开发 -- 分享 互助 成长

C语言中指针数组和数组指针的区别

指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定。它是“储存指针的数组”的简称。 数组指针:首先它是一个指针,它指向一个数组。在...

25060
来自专栏大闲人柴毛毛

稳扎稳打JavaScript(三)——创建对象的几种方式

有了前面两篇文章的基础后,我们来谈一谈在JS中创建对象的几种方式。 建议大家先预习下先前的两篇博客: 稳扎稳打JavaScript(一)——作用域链 ...

45240
来自专栏和蔼的张星的图像处理专栏

6. 合并排序数组

合并两个排序的整数数组A和B变成一个新的数组。 样例 给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6] 最简单...

18920
来自专栏我的博客

PHP技术点A

1、合并数组(array_merge和+的区别) array_merge如果两个数组存在相同的key,后面的会覆盖前面的 备注:如果是数字索引,则不会覆盖,...

351100
来自专栏程序员互动联盟

【答疑解惑】Java中的默认构造器和equals方法

有一些网友在学习Java基础知识是遇到一些问题小编来解答一下。 1、Java中的默认构造器: 在Java中你要创建一个对象肯定会调用new语句来创建一个对象,在...

37780
来自专栏技术专栏

Scala入门与进阶(六)- Scala 函数高级操作

12720
来自专栏从流域到海域

Python的闭包(Closure)与惰性计算(Lazy Evaluation)

闭包 在一些语言中,在函数中可以(嵌套)定义另一个函数时,如果内部的函数引用了外部的函数的变量,则可能产生闭包。运行时,一旦外部的 函数被执行,一个闭包就形成...

298100

扫码关注云+社区

领取腾讯云代金券