字典


字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})

语法:

 goods = {
'apple':4.5,
'orange':2.3,
'banana':3.5
}

字典的特性:

  • dict是无序的
  • key必须是唯一的

1.增加元素

 >>> goods
{'apple': 4.5, 'banana': 3.5, 'orange': 2.3}
>>> goods['peach']=5.0
>>> goods
{'apple': 4.5, 'banana': 3.5, 'orange': 2.3, 'peach': 5.0}

2.修改

 >>> goods['apple']=5.5  # 将苹果的价格改为 5.5
>>> goods
{'apple': 5.5, 'banana': 3.5, 'orange': 2.3, 'peach': 5.0}

3.删除元素

 >>> goods
{'apple': 5.5, 'banana': 3.5, 'orange': 2.3, 'peach': 5.0}
>>> goods.pop('peach') #删除peach,并返回value的值
5.0
>>> goods
{'apple': 5.5, 'banana': 3.5, 'orange': 2.3} >>> del goods['banana'] # 指定 key的删除
>>> goods
{'apple': 5.5, 'orange': 2.3} >>> goods
{'apple': 5.5, 'grape': 6.0, 'orange': 2.3, 'watermelon': 12.0}
>>> goods.popitem() # 随机删除
('apple', 5.5)
>>> goods
{'grape': 6.0, 'orange': 2.3, 'watermelon': 12.0}

4.查找

 >>> goods
{'grape': 6.0, 'orange': 2.3, 'watermelon': 12.0}]
# key的值在字典中存在
>>> 'grape' in goods
True
# key存在就返回 value , 不存在就返回 None
>>> goods.get('orange') # 知道key,获取 value
2.3
>>> goods['watermelon']
12.0
>>> goods['apple'] # 如果一个key不存在,就会报错,get不会,不存在只会返回None
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'apple'

5.多级字典及操作

 area = {'浙江':
{
'杭州':['西湖区','下城区','萧山区'],
'嘉兴':['南湖区','秀洲区','平湖市'],
'温州':['九湾区','鹿城区','洞头区']
},
'江苏':
{
'南京':['鼓楼区','玄武区','秦淮区'],
'苏州':['姑苏区','吴中区','虎丘区'],
'常州':['武进区','金坛市','溧阳市']
} } >>> area['浙江']['杭州']
['西湖区', '下城区', '萧山区'] >>> area['浙江']['杭州'][1] += ',很大'
>>> area['浙江']['杭州']
['西湖区', '下城区,很大', '萧山区']

6.其他用法

 >>> area.keys()
dict_keys(['浙江', '江苏']) # 返回字典中的所有keys,生成一个列表
>>> goods.values()
dict_values([6.0, 2.3, 12.0]) #返回字典中的所有values,生成一个列表
>>> goods.keys()
dict_keys(['grape', 'orange', 'watermelon']) {'grape': 6.0, 'orange': 2.3, 'watermelon': 12.0}
>>> b = {1:2,3:4,'grape':4.5}
# update()是把两个字典合并成一个新字典,中间有交叉的key,更新替换成新值,没有交叉就直接创建
>>> goods.update(b)
>>> goods
{1: 2, 3: 4, 'grape': 4.5, 'orange': 2.3, 'watermelon': 12.0} >>> goods.items()
dict_items([(1, 2), (3, 4), ('grape', 4.5), ('orange', 2.3), ('watermelon', 12.0)])

7.setdefault(k,v)

不存在的key 就添加,存在就返回原值

fruits = {"apple":5.6,
"banana":4.5,
"peal":6.5,
"orange":4.3} #设置不存在的key,则添加新值
fruits.setdefault("watermelon",8.8)
print(fruits) #输出
{'banana': 4.5, 'orange': 4.3, 'apple': 5.6, 'peal': 6.5, 'watermelon': 8.8}
#设置存在的值,则 value还是原值
fruits.setdefault("apple",3.6)
print(fruits["apple"]) #输出
5.6

8.itmes()

把字典转换成列表 

fruits = {"apple":5.6,
"banana":4.5,
"peal":6.5,
"orange":4.3} print(fruits.items()) #输出
dict_items([('peal', 6.5), ('apple', 5.6), ('orange', 4.3), ('banana', 4.5)])

  

9.遍历字典

 for key in goods:
print(key,goods[key])
#或
for k,v in goods.items():
print(k,v)

python基础2--字典的更多相关文章

  1. python基础之字典dict和集合set

    作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7043642.html python基础之字典dict和集合set 字典dic ...

  2. Python基础数据类型-字典(dict)

    Python基础数据类型-字典(dict) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客使用的是Python3.6版本,以及以后分享的每一篇都是Python3.x版本的哟 ...

  3. python基础之字典、集合

    一.字典(dictionary) 作用:存多个值,key-value存取,取值速度快 定义:key必须是不可变类型,value可以是任意类型 字典是一个无序的,可以修改的,元素呈键值对的形式,以逗号分 ...

  4. Python基础知识---字典

    现在在实习期间,好久没用Python了,今天在做Java项目时用的HashMap让我联想到了Python中的字典,就写一些Python字典的知识吧,复习复习. 字典:  key --> valu ...

  5. python基础5 字典

    一.字典 字典是python的基础数据类型之一:字典可以存储大量的数据,关系型数据. 同样他也是python中唯一的映射类的数据类型. 数据类型的分类: 可变的(不可哈希)数据类型:list,dict ...

  6. python基础_字典_列表_元组考试_day4

    1.请用代码实现:利用下划线将列表的每一个元素拼接成字符串,li=['alex','eric','rain'] li=['alex','eric','rain'] v="_".jo ...

  7. Python基础__字典、集合、运算符

    之前讨论的字符串.列表.元组都是有序对象,本节则重点讨论无序对象:字典与集合.一.字典 列表是Python中的有序集合,列表中的序指的是列表中的元素与自然数集形成了一个一一对应的关系.例如L=['I' ...

  8. python基础类型—字典

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

  9. Python 全栈开发二 python基础 字符串 字典 集合

    一.字符串 1,在python中,字符串是最为常见的数据类型,一般情况下用引号来创建字符串. >>ch = "wallace" >>ch1 = 'walla ...

  10. python基础之字典以及增删改查

    字典:字典是python中唯一的一个映射类型,主要形式为 dic = {key1:value,key2:value2,....} 字典中key的值是唯一的,主要关系到HASH算法,并且key的值必须是 ...

随机推荐

  1. JavaWeb项目通过调用cmd实现备份数据库的功能

    1.别急着上车,先测试一下能否成功调用cmd,可以尝试通过cmd命令打开计算器,代码如下:     2.能成功打开计算器后,证明调用cmd的方法是没错的,现在把cmd命令字符串改成我们备份数据库的 命 ...

  2. 【Alpha】阶段第六次Scrum Meeting

    [Alpha]阶段第六次Scrum Meeting 工作情况 团队成员 今日已完成任务 明日待完成任务 刘峻辰 增加教师接口 增加上课信息接口 赵智源 构建后端测试点测试框架 构建后测试点测试框架 肖 ...

  3. My Sql数据库设置环境变量和字符集

    一.踩坑背景 之前开发中一直用的是sql  server 数据库,最近接到公司一个老的项目,用的my sql数据库做的,功能做了一大部分,现在客户要求对原程序和数据库进行服务器的迁移工作.产品经理给出 ...

  4. java项目 相对路径(本项目的地址)

    File file=new File(""); String abspath=file.getAbsolutePath(); System.out.println(abspath) ...

  5. Java 多线程之:偏向锁,轻量级锁,重量级锁

    一:java多线程互斥,和java多线程引入偏向锁和轻量级锁的原因? --->synchronized的重量级别的锁,就是在线程运行到该代码块的时候,让程序的运行级别从用户态切换到内核态,把所有 ...

  6. A网站访问B网站,跨域问题

    跨域异常:XMLHttpRequest cannot load  ''. No 'Access-Control-Allow-Origin' header is present on the reque ...

  7. Enterprise Library 5.0 参考源码索引

    http://www.projky.com/entlib/5.0/Microsoft/Practices/EnterpriseLibrary/Caching/BackgroundScheduler.c ...

  8. “四则运算生成程序——GUI支持和部分功能改进”链接

    项目成员:张金生     张政 <正文随笔发布在张金生博客中> 四则运算生成程序——GUI支持和部分功能改进

  9. delphi中将一个ADOQuery查询的数据结果传递给一个动态生成的ADOQuery

    delphi中将一个ADOQuery查询的数据结果传递给一个动态生成的ADOQuery 2010-03-10 17:35 方法一: beginADOQuery:=TADOQuery.Create(Ap ...

  10. VMWare之——宿主机与虚拟机互相ping通,宿主机ping通另一台机器的虚拟机

    版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请注明出处:http://blog.csdn.NET/l1028386804/article/details/52267554 今天给大家带来 ...