python教程-(四)当索引行不通时(python字典)
一、创建和使用字典
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字典)的更多相关文章
- 笔记|《简明Python教程》:编程小白的第一本python入门书
<简明Python教程>这本书是初级的Python入门教材,初级内容基本覆盖,对高级内容没有做深入纠结.适合刚接触Python的新手,行文比较简洁轻松,读起来也比较顺畅. 下面是我根据各个 ...
- 简明python教程四-----模块
模块基本是一个包含了所有你定义的函数和变量的文件.为了在其他程序中重用模块,模块的文件名必须以.py为扩展名. #!/usr/bin/python #Filename:using_sys.py imp ...
- python教程(二)·第一个python程序
几乎所有的计算机语言教程,不仅仅是python,都以这样一个相似的示例程序开始讲解--Hello World! 代码如下,简简单单的一行.想必稍微了解英语的读者,都能猜到这段代码功能吧. print( ...
- python 教程 第二十一章、 扩展Python
第二十一章. 扩展Python /* D:\Python27\Lib\Extest-1.0\Extest2.c */ #include <stdio.h> #include <std ...
- python 教程 第八章、 第一个python程序
第八章. 第一个python程序 #!/usr/bin/env python import os import sys import time source = [r'G:\s1', r'G:\s2' ...
- 【转】简明 Python 教程
原文网址:http://woodpecker.org.cn/abyteofpython_cn/chinese/ 简明 Python 教程Swaroop, C. H. 著沈洁元 译www.byteof ...
- 写给.NET开发者的Python教程(一):引言
距离上一篇博文已过去8个月了,这段时间发生了很多事情导致没能持续更新博客.这段时间除了工作繁忙,业余时间都投入到AI技术的学习中,后面一段时间将会给大家分享我作为一个.NET开发人员在深度学习领域学习 ...
- Python列表介绍,最常用的Python数据类型
文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:数据杂论 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获 ...
- PySide——Python图形化界面入门教程(四)
PySide——Python图形化界面入门教程(四) ——创建自己的信号槽 ——Creating Your Own Signals and Slots 翻译自:http://pythoncentral ...
随机推荐
- I/O流中的字节流
今天总结一下Java中重要的知识点I/O流,今天主要学习了字节流(自己的理解) 什么是I/O:我们把这种数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为输入input和输出ou ...
- Linux系列(2) - 命令提示符
命令提示符 起始符 [root@localhost ~]# root:当前登录用户 localhost:主机名 ~:当前所在目录(家目录);管理员为 /root ,user用户为 /home/user ...
- 关于连接服务器redis的教程
第一步:下载RedisDesktopManager 这个百度一搜就有了,但是现在的版本ssh用不了 建议找可以用的版本,这个百度,懂得都懂. 第二步:服务器宝塔redis设置 在配置文件将bind 1 ...
- adb devices如何连逍遥模拟器的设备
adb device连接真机,上一篇已经讲过了,这篇讲如何连接模拟器.这里我用的模拟器逍遥模拟器.我先插上手机,另外启动了一个模拟器,直接在cmd中输入adb devices,按理应该有2个设备id, ...
- P4332-[SHOI2014]三叉神经树【LCT】
正题 题目链接:https://www.luogu.com.cn/problem/P4332 题目大意 给出\(n\)个点的一棵有根三叉树,保证每个点的儿子个数为\(3\)或者\(0\),每个叶子有一 ...
- SVN基本配置--创建版本库(图文并茂)
SVN基本配置简 上一篇介绍了VisualSVN Server和TortoiseSVN的下载,安装,汉化.这篇介绍一下如何使用VisualSVN Server建立版本库,以及TortoiseSVN的使 ...
- golang实现一个简单的websocket聊天室
基本原理: 1.引入了 golang.org/x/net/websocket 包. 2.监听端口. 3.客户端连接时,发送结构体: {"type":"login" ...
- 感恩笔记之SQL查询功能最简使用模板
感恩笔记之SQL查询功能最简使用模板 第一部分:SQL单表功能 1 语句主要关键字 SELECT --查询数据列 INTO --新建数据表 FROM --查询数据表 WHERE --筛选数据表结果 O ...
- qsort()函数的使用
函数声明 void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*)) 参数 ...
- [kuangbin带你飞]专题一 简单搜索 棋盘问题
题来:链接https://vjudge.net/problem/OpenJ_Bailian-132 J - 棋盘问题 1.题目: 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别. ...