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 ...
随机推荐
- Spring框架(第二天)
一. 注入 a) set i. JDK 1.八种基本类型(+包装类)+String <bean id="User" class="com.dsl.test2.Us ...
- ESP8266- AP模式的使用
打算通过该模式,利用手机APP完成配网 • AP,也就是无线接入点,是一个无线网络的创建者,是网络的中心节点.一般家庭或办公室使用的无线路由器就是一个AP. • STA站点,每一个连接到无线网络中的终 ...
- deecms栏目页调用自定义字段方法
{dede:arclist addfields='suoxu_jifen,shichang_jiage' typeid='13' row='15' channelid='3'} <li>& ...
- Java基础系列(31)- 可变参数
可变参数 JDK1.5开始,Java支持传递同类型的可变参数给一个方法 在方法声明中,在指定参数类型后加一个省略号(...) 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数.任何普通的参数 ...
- Kotlin协程基础
开发环境 IntelliJ IDEA 2021.2.2 (Community Edition) Kotlin: 212-1.5.10-release-IJ5284.40 我们已经通过第一个例子学会了启 ...
- mapper-spring-boot-starter 主要作用是
今天是第一次接触到 这个场景启动器内心中真是一片的茫然,学习了这么长时间我居然还不知道有这个的存在今天好好查一查资料 参考资料(https://blog.csdn.net/crq1205/articl ...
- Abp vNext 番外篇-疑难杂症丨浅谈扩展属性与多用户设计
说明 Abp vNext基础篇的文章还差一个单元测试模块就基本上完成了我争取10.1放假之前给大家赶稿出来,后面我们会开始进阶篇,开始拆一些东西,具体要做的事我会单独开一个文章来讲 缘起 本篇文章缘起 ...
- 2017第二届广东省强网杯线上赛:WEB phone number (SQL注入)
目录 解题思路 总结 解题思路 拿到题目的时候,只有一个登录界面 拿到登录界面,而且还伴随着有注册界面,联想到SQL的二次注入漏洞 尝试注册admin'#,并使用admin登录,发现登录失败,说明可能 ...
- Linux环境yum,安装MySQL
Linux 使用yum命令安装mysql [安装步骤] 1.先检查系统是否安装有mysql [root@localhost ~]#yum list installed mysql* [root@loc ...
- Java面向对象编程(二)
关键字 -- this 一.this关键字的使用: 1.this可以用来修饰.调用:属性.方法.构造器. 2.this修饰属性和方法: this理解为:当前对象 或 当前正在创建的对象. 2.1 在类 ...