一、创建和使用字典

1.函数dict

#字典表示方式如下
>>> phonebook = {'tom':'18616271234',"Jim":"18612345678"}
>>> phonebook['tom']
'18616271234' #函数dict
>>> items = [('name','tom'),("age","20")]
>>> d = dict(items)
>>> d
{'name': 'tom', 'age': '20'} >>> d = dict(name="tom",age="20")
>>> d
{'name': 'tom', 'age': '20'}

2.基本的字典操作

len(d) 返回字典的项数

d[k] 返回键k对应的值

d[k]=v 将值v赋予键k

del d[k] 删除键为k的项

k in d 检查字典中是否包含键k

>>> wolaile={"name":"Tom","age":26,"address":"shanghai"}
>>> wolaile
{'name': 'Tom', 'age': 26, 'address': 'shanghai'}
>>> wolaile["address"]
'shanghai'
>>> wolaile["address"]="beijing"
>>> wolaile
{'name': 'Tom', 'age': 26, 'address': 'beijing'}
>>> wolaile["sex"]="man"
>>> wolaile
{'name': 'Tom', 'age': 26, 'address': 'beijing', 'sex': 'man'}
>>> del wolaile["sex"]
>>> wolaile
{'name': 'Tom', 'age': 26, 'address': 'beijing'}
>>> "age" in wolaile
True
>>> "sex" in wolaile
False
#字典示例
people={
"Tom":{"phone":1234, "addr":"shanghai"},
"Jim":{"phone":5678, "addr":"beijing"},
"Lily":{"phone":1590, "addr":"shenzhen"} }
labels={
"phone":"phone number",
"addr":"address"
}
name=input("Name: ")
request=input("phone number (p) or address (a)?") if request == 'p' : key='phone'
if request == 'a' : key = 'addr' if name in people: print("{}'s {} is {}".format(name, labels[key], people[name][key]))

3.将字符串格式设置功能用于字典

>>> phonebook={"Jim":"123123","Tom":"121231"}
>>> "Tom's phone number is {Tom}".format_map(phonebook)
"Tom's phone number is 121231"
>>> template="""<html><head><title>{title}</title></head><body><h1>{title}</h1><p>{text}</p></body>"""
>>> data={"title":"wolaile","text":"woyoulaile"}
>>> template.format_map(data)
'<html><head><title>wolaile</title></head><body><h1>wolaile</h1><p>woyoulaile</p></body>'

4.字典方法

#clear 清空
>>> x={}
>>> y=x
>>> x["key"]="value"
>>> x
{'key': 'value'}
>>> y
{'key': 'value'}
>>> x={}
>>> x
{}
>>> y
{'key': 'value'}
#使用clear方法后
>>> x = {}
>>> y = x
>>> x
{}
>>> y
{}
>>> x["key"]="value"
>>> x
{'key': 'value'}
>>> y
{'key': 'value'}
>>> x.clear()
>>> x
{}
>>> y
{}
#copy和deepcopy
#copy浅复制
>>> x = {"username":"tom", "extendinfo":["age","salary","sex"]}
>>> x
{'username': 'tom', 'extendinfo': ['age', 'salary', 'sex']}
>>> y = x.copy()
>>> y
{'username': 'tom', 'extendinfo': ['age', 'salary', 'sex']}
>>> y["username"] = "Jim"
>>> y["extendinfo"].remove("sex")
>>> y
{'username': 'Jim', 'extendinfo': ['age', 'salary']}
>>> x
{'username': 'tom', 'extendinfo': ['age', 'salary']} #deepcopy深复制
>>> from copy import deepcopy
>>> d={}
>>> d["username"] = ['Lucy','Lily']
>>> d
{'username': ['Lucy', 'Lily']}
>>> c = d.copy()
>>> dc = deepcopy(d)
>>> d["username"].append("Tom")
>>> c
{'username': ['Lucy', 'Lily', 'Tom']}
>>> dc
{'username': ['Lucy', 'Lily']}
>>>
#fromkeys 创建一个新字典,包含指定的key,每个key默认值是None
>>> {}.fromkeys(["username","phone"])
{'username': None, 'phone': None}
>>> dict.fromkeys(["username","phone"])
{'username': None, 'phone': None}
>>> dict.fromkeys(["username","phone"],"x")
{'username': 'x', 'phone': 'x'}
#items 返回一个包含所有字典项的列表
>>> d={"title":"CTO","username":"Jim","addr":"shanghai"}
>>> d.get("title")
'CTO'
>>> d.get("title","unknown")
'CTO'
>>> d.get("salary","unknown")
'unknown'
>>> d.items()
dict_items([('title', 'CTO'), ('username', 'Jim'), ('addr', 'shanghai')])
>>> it = d.items()
>>> len(it)
3
>>> ("title","CTO") in it
True
>>> d["username"]="Lucy"
>>> it
dict_items([('title', 'CTO'), ('username', 'Lucy'), ('addr', 'shanghai')])
>>> list(d.items())
[('title', 'CTO'), ('username', 'Lucy'), ('addr', 'shanghai')]
#keys方法返回字典的所有key
>>> d
{'title': 'CTO', 'username': 'Lucy', 'addr': 'shanghai'}
>>> d.keys()
dict_keys(['title', 'username', 'addr'])
>>> ki = d.keys()
>>> ki
dict_keys(['title', 'username', 'addr']) #pop方法,删除指定的键值对
>>> d.pop("title")
'CTO'
>>> d
{'username': 'Lucy', 'addr': 'shanghai'}
>>>
#setdefault方法,如果键不存在,则返回指定的值,如果键存在,返回其值
>>> d
{'username': 'Lucy', 'addr': 'shanghai'}
>>> d.setdefault("username")
'Lucy'
>>> d
{'username': 'Lucy', 'addr': 'shanghai'}
>>> d.setdefault("age",18)
18
>>> d
{'username': 'Lucy', 'addr': 'shanghai', 'age': 18} #update 更新指定的key的value
>>> d
{'username': 'Lucy', 'addr': 'shanghai', 'age': 18}
>>> e={"addr":"beijing"}
>>> d.update(e)
>>> d
{'username': 'Lucy', 'addr': 'beijing', 'age': 18}
>>> #values 返回字段的value值
>>> d
{'username': 'Lucy', 'addr': 'beijing', 'age': 18}
>>> d.values()
dict_values(['Lucy', 'beijing', 18])
>>>

python教程-(四)当索引行不通时(python字典)的更多相关文章

  1. 笔记|《简明Python教程》:编程小白的第一本python入门书

    <简明Python教程>这本书是初级的Python入门教材,初级内容基本覆盖,对高级内容没有做深入纠结.适合刚接触Python的新手,行文比较简洁轻松,读起来也比较顺畅. 下面是我根据各个 ...

  2. 简明python教程四-----模块

    模块基本是一个包含了所有你定义的函数和变量的文件.为了在其他程序中重用模块,模块的文件名必须以.py为扩展名. #!/usr/bin/python #Filename:using_sys.py imp ...

  3. python教程(二)·第一个python程序

    几乎所有的计算机语言教程,不仅仅是python,都以这样一个相似的示例程序开始讲解--Hello World! 代码如下,简简单单的一行.想必稍微了解英语的读者,都能猜到这段代码功能吧. print( ...

  4. python 教程 第二十一章、 扩展Python

    第二十一章. 扩展Python /* D:\Python27\Lib\Extest-1.0\Extest2.c */ #include <stdio.h> #include <std ...

  5. python 教程 第八章、 第一个python程序

    第八章. 第一个python程序 #!/usr/bin/env python import os import sys import time source = [r'G:\s1', r'G:\s2' ...

  6. 【转】简明 Python 教程

    原文网址:http://woodpecker.org.cn/abyteofpython_cn/chinese/ 简明 Python 教程Swaroop, C. H. 著沈洁元  译www.byteof ...

  7. 写给.NET开发者的Python教程(一):引言

    距离上一篇博文已过去8个月了,这段时间发生了很多事情导致没能持续更新博客.这段时间除了工作繁忙,业余时间都投入到AI技术的学习中,后面一段时间将会给大家分享我作为一个.NET开发人员在深度学习领域学习 ...

  8. Python列表介绍,最常用的Python数据类型

    文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:数据杂论 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获 ...

  9. PySide——Python图形化界面入门教程(四)

    PySide——Python图形化界面入门教程(四) ——创建自己的信号槽 ——Creating Your Own Signals and Slots 翻译自:http://pythoncentral ...

随机推荐

  1. symfony2显示调试工具栏

    1. app/config/config_dev.yml framework: templating: engines: ['twig'] router: resource: "%kerne ...

  2. php去除html标签及空格回车

    /** * 去除html标签和空格回车等 * @param $string * @return string */ function cutstr_html($string){ $string = s ...

  3. Java基础系列(33)- 计算器

    package method; import java.util.Scanner; public class Demo09 { static double result; static String ...

  4. Shell系列(26)- 条件判断之两个文件比较

    两个文件之间进行比较 测试选项 作用 文件1 -net 文件2 判断文件1的修改时间是否比文件2的新(如果新则为真) 文件1 -ot 文件2 判断文件1的修改时间是否比文件2的旧(如果旧则为真) 文件 ...

  5. 鸿蒙内核源码分析(ELF格式篇) | 应用程序入口并不是main | 百篇博客分析OpenHarmony源码 | v51.04

    百篇博客系列篇.本篇为: v51.xx 鸿蒙内核源码分析(ELF格式篇) | 应用程序入口并不是main | 51.c.h.o 加载运行相关篇为: v51.xx 鸿蒙内核源码分析(ELF格式篇) | ...

  6. AT2567-[ARC074C]RGB Sequence【dp】

    正题 题目链接:https://www.luogu.com.cn/problem/AT2567 题目大意 长度为\(n\)的包含三种颜色\(RGB\)的序列,\(m\)个限制\([l,r,k]\)表示 ...

  7. Selenium自动化结合Mysql数据项目实战操作

    前言 web自动化结合Mysql做一些实战操作,今天实战的场景是通过读取web页面字段名与数据库相应的表中的字段名进行对比 - 注:商城是自己搭建在本地,小伙伴需要源码请私聊 解决思路 第一步:获取w ...

  8. 测试用例 setup 和 和 teardown

    前言 学过unittest的都知道里面用前置和后置setup呾teardown非常好用,在每次用例开始前呾结束后都去执行一次.当然迓有更高级一点的 setupClass 呾 teardownClass ...

  9. Jetpack Compose学习(7)——MD样式架构组件Scaffold及导航底部菜单

    Jetpack Compose学习(7)--MD样式架构组件Scaffold及导航底部菜单 | Stars-One的杂货小窝 Compose给我们提供了一个Material Design样式的首页组件 ...

  10. MySQL的详细讲解

    目录 Mysql的架构与历史 MySQL的逻辑架构 更新中---- Mysql的架构与历史 MySQL的逻辑架构 第二层的架构是所有的跨引擎的功能实现的地方,例如:存储,触发器,视图等. 第三层半酣了 ...