Python基础 之 tuple类-元组 和 dict类-字典
tuple 元组
一、tuple 类的基本属性
1.元组,有序;
元素不可被修改,不能被增加或者删除
tuple类
tu = (111,22,33,44)
一般写元组的时候,推荐在最后加入,和类方法进行区别
tu2 = (111,"root",(11,22),[(33,44)],True,22,33,44,)
元组的一级元素不可修改、增加或删除
tu = (111,"root",(11,22),[(33,44)],True,22,33,44,)
v = tu[3]
v.extend((11,))
print(tu)
#(111, 'root', (11, 22), [(33, 44), 11], True, 22, 33, 44)
2.元组索引
tu = (111,"root",(11,22),[(33,44)],True,22,33,44,)
v = tu[0]
print(v)
n = tu[3][0][0] #注意这里
print(n)
#
#
元组索引
3.元组切片
tu = (111,"root",(11,22),[(33,44)],True,22,33,44,)
v = tu[0:2]
print(v)
#(111, 'root')
元组切片
*** v = tu[0] 和 del tu[0] 都是错误的,因为元组不能被修改、添加和删除
4.可迭代对象
元组成为被迭代对象,可以被 for 循环
tu = (111,"root",(11,22),[(33,44)],True,22,33,44,)
for item in tu:
print(item)
#
#root
#(11, 22)
#[(33, 44)]
#True
#
#
#
for item in tu:
元组成为被迭代对象,添加进 list 列表中
li = ["root","even"]
li.extend((11,22,33,))
print(li)
#['root', 'even', 11, 22, 33]
元组为被迭代对象
5.元组的转换
把字符串转换成 tuple 元组
s = "root"
v = tuple(s)
print(v)
#('r', 'o', 'o', 't')
tuple()
把 list 列表转换成 tuple 元组
li = ["even",123]
v = tuple(li)
print(v)
#('even', 123)
tuple()
把 tuple 元组转换成 list 列表
tu = (123,123,"root")
v = list(tu)
print(v)
#[123, 123, 'root']
list()
元组转换成字符串(既有数字又有字符串的情况)
需要自己写 for 循环一个一个处理
tu = (11,22,33,"","even")
s = ""
for i in tu:
s = s + str(i)
print(s)
#112233123even
元组转换成字符串(列表中的元素只有字符串的情况)
直接使用字符串 join 方法
tu = ("","alex") #这里的"123"不是数字
v = "_".join(tu)
print(v)
#123alex
二、tuple 类的方法
1.count
统计某个值出现的次数(类似list类中的意义)
tu = (111,"root",(11,22),[(33,44)],True,22,33,44,)
n = tu.count(22)
print(n)
#
count()
2.index
找到某个值的索引位置(类似list类中的意义)
tu = (111,"root",(11,22),[(33,44)],True,22,33,44,)
n = tu.index(22)
print(n)
#
index()
三、tuple 类 —— 总而言之
在创建数据不允许被修改的时候,使用tuple类
除非把tuple转换成list,否则无法对其修改
dict 字典
一、dict 类的基本属性
1.字典的基本结构
info = {"k1":"v1","k2":"v2"}
info = {
"k1":"v1", #键值对(一个键key和一个值value生成的一对)
"k2":"v2"
}
2.值 - value
字典的value可以是任何值
info = {
"k1": 18,
"k2": True,
"k3": [
11,
[],
(),
22,
33,
{
'kk1': 'vv1',
'kk2': 'vv2',
'kk3': (11,22),
}
],
"k4": (11,22,33,44)
}
print(info)
#{'k1': 18, 'k2': True, 'k3': [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}], 'k4': (11, 22, 33, 44)}
3.键 - key
*** list列表、dict字典不能作为字典的 key
info ={
1: 'asdf',
"k1": 'asdf',
True: "", #True布尔值作为key,为1,因为上面已经有1作为key,所以这里输出会直接跳过,但布尔值可以作为key
# [11,22]: 123 列表作为key,ide会直接报错
(11,22): 123,
# {'k1':'v1'}: 123 字典作为key,ide会直接报错
}
print(info)
4.字典无序 (Python3.6版本后改为有序)
PS:这个地方因为我在输出的时候,无论如何都是按照 key和 value对应的顺序输出,所以得出的结论,查询网上的资料后发现 3.6 版本后 dict改成了有序,
Python2.7待测试
info = {
"k1": 18,
"k2": True,
"k3": [
11,
[],
(),
22,
33,
{
'kk1': 'vv1',
'kk2': 'vv2',
'kk3': (11,22),
}
],
"k4": (11,22,33,44)
}
print(info)
#{'k1': 18, 'k2': True, 'k3': [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}], 'k4': (11, 22, 33, 44)}
5.通过索引方式找到指定元素
info = {
"k1": 18,
2: True,
"k3": [
11,
[],
(),
22,
33,
{
'kk1': 'vv1',
'kk2': 'vv2',
'kk3': (11,22),
}
],
"k4": (11,22,33,44)
}
v = info['k3'][5]['kk3'][0]
print(v)
#
dict 索引
6.字典支持 del 删除
info = {
"k1": 18,
2: True,
"k3": [
11,
[],
(),
22,
33,
{
'kk1': 'vv1',
'kk2': 'vv2',
'kk3': (11,22),
}
],
"k4": (11,22,33,44)
}
del info['k1'] #删除k1的key和value
del info['k3'][5]['kk1'] #删除kk1的key和value
print(info)
#{2: True, 'k3': [11, [], (), 22, 33, {'kk2': 'vv2', 'kk3': (11, 22)}], 'k4': (11, 22, 33, 44)}
dict 的删除
7.判断
dic = {
"k1": 'Q'
}
v1 = "k1" in dic #判断k1是否在字典中
print(v1)
v2 = "Q" in dic.values() #判断Q是否在字典的values中
print(v2)
#True
#True
判断是否在字典中
8.for 循环和 dict 类的一些方法
for item in info:
dict 字典在 for 循环的时候,默认循环输出键值 key
info = {
"k1": 18,
2: True,
"k3": [
11,
[],
(),
22,
33,
{
'kk1': 'vv1',
'kk2': 'vv2',
'kk3': (11,22),
}
],
"k4": (11,22,33,44)
}
for item in info:
print(item)
#k1
#
#k3
#k4
for item in info:
for item in info.keys():
效果所以等同于上面代码
info = {
"k1": 18,
2: True,
"k3": [
11,
[],
(),
22,
33,
{
'kk1': 'vv1',
'kk2': 'vv2',
'kk3': (11,22),
}
],
"k4": (11,22,33,44)
}
for item in info.keys():
print(item)
#k1
#
#k3
#k4
for item in info.keys():
for item in info.values():
for 循环输出 value 的值
info = {
"k1": 18,
2: True,
"k3": [
11,
[],
(),
22,
33,
{
'kk1': 'vv1',
'kk2': 'vv2',
'kk3': (11,22),
}
],
"k4": (11,22,33,44)
}
for item in info.values():
print(item)
#
#True
#[11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}]
#(11, 22, 33, 44)
for item in info.values():
for item in info.keys():
print(item,info[item])
既输出 key也输出 value
info = {
"k1": 18,
2: True,
"k3": [
11,
[],
(),
22,
33,
{
'kk1': 'vv1',
'kk2': 'vv2',
'kk3': (11,22),
}
],
"k4": (11,22,33,44)
}
for item in info.keys():
print(item,info[item])
#k1 18
#2 True
#k3 [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}]
#k4 (11, 22, 33, 44)
输出key 和 value
for k,v in info.items():
print(k,v)
另一种既输出 key 也输出 value 的方法
info = {
"k1": 18,
2: True,
"k3": [
11,
[],
(),
22,
33,
{
'kk1': 'vv1',
'kk2': 'vv2',
'kk3': (11,22),
}
],
"k4": (11,22,33,44)
}
for k,v in info.items(): #将key赋值给k,将value赋值给v
print(k,v)
#k1 18
#2 True
#k3 [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}]
#k4 (11, 22, 33, 44)
for k,v in info.items():
二、dict 类的方法
1.静态方法fromkeys
根据序列,创建字典,并且指定统一的值
v = dict.fromkeys(["k1",123,""])
print(v)
#{'k1': None, 123: None, '999': None} v = dict.fromkeys(["k1",123,""],111)
print(v)
#{'k1': 111, 123: 111, '999': 111}
dict.fromkeys()
2.get
根据 key 获取值,key不存在时(None),可以指定附加值
dic = {
"k1":'v1'
}
v1 = dic.get('k1',1111) #当k1有自己的value时,忽略后面附加值
v2 = dic.get('k2') #当没有k2,后面也没有加附加值时,输出None
v3 = dic.get('k3',3333) #当没有k3,但后面有附加值时,输出附加值
print(v1)
print(v2)
print(v3)
#v1
#None
#
get()
3.pop
删除,并得到被删除的值
dic = {
"k1":'v1',
"k2":'v2'
}
v = dic.pop('k1')
print(v) #输出被删除的值
print(dic) #输出删除操作之后的dic
#v1
#{'k2': 'v2'}
pop()
4.popitem
随机删除键值对,并得到被删除的键值对
dic = {
"k1":'v1',
"k2":'v2'
}
n = dic.popitem()
print(n) #输出被随机删除的键值对
print(dic) #输出被随机删除操作之后的dic
#('k2', 'v2')
#{'k1': 'v1'}
popitem()
5.setdefault
设置值,若已经存在,则不设置。只获取当前 key所对应的 value
若不存在,则设置值。并获取当前 key对应的 value
dic = {
"k1":'v1',
"k2":'v2'
}
n1 = dic.setdefault('k1','')
print(dic,n1)
n2 = dic.setdefault('k111','')
print(dic,n2)
#{'k1': 'v1', 'k2': 'v2'} v1
#{'k1': 'v1', 'k2': 'v2', 'k111': '112233'} 112233
setdefault()
6.update
已经存在的,进行覆盖新值;不存在的,进行更新
dic = {
"k1":'v1',
"k2":'v2'
}
dic.update({'k1':'','k3':123})
print(dic)
#{'k1': '11111', 'k2': 'v2', 'k3': 123}
update()
另一种写法:
dic = {
"k1":'v1',
"k2":'v2'
}
dic.update(k1=123,k3=333,k5="sdfsdf")
print(dic)
#{'k1': 123, 'k2': 'v2', 'k3': 333, 'k5': 'sdfsdf'}
update()
* dict类最常用的几个功能和方法
.keys()
.values()
.items()
get
update
Python基础 之 tuple类-元组 和 dict类-字典的更多相关文章
- python基础之 列表、元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码
本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...
- python基础之列表list元组tuple
作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7041763.html python基础之列表list元组tuple 列表li ...
- Python中list(列表)、dict(字典)、tuple(元组)、set(集合)详细介绍
更新时间:2019.08.10 更新内容: "2.14加入sorted()函数" "2.3"加入一种删除元素的方法 "二.字典"新增1.5, ...
- python基础之02列表/元组/字典/set集合
python中内置的数据类型有列表(list)元组(tuple)字典(directory). 1 list list是一种可变的有序的集合.来看一个list实例: #第一种方法: >>&g ...
- python基础4 列表和元组
一. 列表列表:python基础数据类型之一:其他语言中也有列表的概念,js 数组,可索引,可切片,可加步长li = ['hello', 100, True, [1, 2, 3], {'name':' ...
- Python基础学习 -- 列表与元组
本节学习目的: 掌握数据结构中的列表和元组 应用场景: 编程 = 算法 + 数据结构 数据结构: 通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合,这些元素可以是数字或者字符,或者其他数据 ...
- 【Python基础】lpthw - Exercise 40 模块、类和对象
一. 模块(module) 模块中包含一些函数和变量,在其他程序中使用该模块的内容时,需要先将模块import进去,再使用.操作符获取函数或变量,如 # This goes in mystuff.py ...
- Python 基础语法学习(第一讲)---类的使用
[写在前面]:其实自学python有一段时间了,但是一直没想起来要写博客来记录自己的学习,今天才感觉要写点什么让自己学的更扎实一点,所以从今天开始更新python自学系列,希望看见文章的大佬们可以指点 ...
- python基础之列表、元组
一.列表 列表(list)是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 作用:多个装备,多个爱好,多门课程,多个女朋友等 定义:[ ]内可以有多个任意类型的值,逗号 ...
随机推荐
- 一点一点看JDK源码(二)java.util.List
一点一点看JDK源码(二)java.util.List liuyuhang原创,未经允许进制转载 本文举例使用的是JDK8的API 目录:一点一点看JDK源码(〇) 1.综述 List译为表,一览表, ...
- Oracle在线重定义(online redefinition)--将普通表改为分区表
使用Oracle的在线重定义技术,可以将Oracle的普通表改为分区表.操作如下: STEP1:测试表是否可以在线重定义,这里以unixdev数据库的LIJIAMAN.BSTEST为例 EXEC DB ...
- 冒泡排序_c++
冒泡排序_c++ GitHub 文解 冒泡排序是采用类似气泡上升的方式对数据进行排序. 例如: 我们这里有10个元素,具体数值随意,对每个数值标记上 1~10 的标记. 首先将标记为 1 的数值与标记 ...
- 关于nodejs下载组件经常失败的问题
由于最近在刚开始做一个前台element和mybatisplus的项目,但是在使用nodejs下载vue的脚手架和各种组件时,会经常出现下载失败的问题,进而导致前台无法启动. 在网上查询之后发现在下载 ...
- Systemd简介与使用
按下电源键,随着风扇转动的声音,显示器上开启的图标亮起.之后,只需要静静等待几秒钟,登录界面显示,输入密码,即可愉快的玩耍了. 这是我们大概每天都做的事情.那么中间到底发生了什么? 简单地说,从BIO ...
- ubuntu下安装应用(搜狗输入法)
- hadoop生态搭建(3节点)-12.rabbitmq配置
# 安装 需要相关包# ==================================================================node1 node2 node3 yum ...
- 2.1 摄像头V4L2驱动框架分析
学习目标:学习V4L2(V4L2:vidio for linux version 2)摄像头驱动框架,分析vivi.c(虚拟视频硬件相关)驱动源码程序,总结V4L2硬件相关的驱动的步骤: 一.V4L ...
- python学习——面向对象的三大特性
一.继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类. 1.python中类的继承分为:单继承和多继承 class P ...
- java入门---基本数据类型之引用数据类型&数据类型转换
接着上一篇文章来,这次就先看看什么是引用数据类型?首先得满足以下条件: 在Java中,引用类型的变量非常类似于C/C++的指针.引用类型指向一个对象,指向对象的变量是引用变量.这些变量在声明时 ...