Python学习笔记之字典,元组,布尔类型和读写文件

目录
  • 1.字典dict
    • 1.1列表和字典的区别
    • 1.2字典示例
    • 1.3练习:写中国省份与省份缩写对应的字母代码
  • 2.元组tuple
  • 3.布尔类型bool
  • 4.读写文件
    • 4.1用命令做一个编辑器
    • 4.2练习写类似的脚本
    • 4.3用一个target.write()来打印line1、line2、line3
    • 4.4Q&A
      • 1.为什么我们需要给open多赋予一个’w’参数
      • 2.如果你用w模式打开文件,那么你还需要target.truncate()吗
  • 总结

1.字典dict

不同于列表只能用数字获取数据,字典可以用任何东西来获取,因为字典通过键索引值,而键可以是字符串、数字、元组。

1.1 列表和字典的区别

things=["a","b","c","d"]
print(things[1])   #只能用数字索引列表中的元素

things[1]="z"   #列表的替换
print(things[1])

things.remove("d")   #列表中删除元素

things
stuff={"name":"zed","age":39,"height":6*12+2}
print(stuff["name"])   #字典可用键索引值,键可以是字符串、也可以是数字
print(stuff["age"])
print(stuff["height"])

stuff["city"]="xiamen"  #字典中增加元素
stuff[1]="reading"      #键为数字
print(stuff["city"])
print(stuff[1])  

del stuff[1]  #字典中删除元素
del stuff["city"]
stuff
zed
39
74
xiamen
reading

{'name': 'zed', 'age': 39, 'height': 74}

1.2 字典示例

# 创建一个州名和州的缩写的映射
states={
    "oregon":"or",
    "florida":"fl",
    "california":"ca",
    "newyork":"ny",
    "michigan":"mi"
}

# 创建州的缩写和对应州的城市的映射
cities={
    "ca":"san francisco",
    "mi":"detroit",
    "fl":"jacksonville"
}

#添加城市
cities["ny"]="new york"
cities["or"]="portland"

# 输出州的缩写
print("-"*10)
print("michigan's abbreviation is:",states["michigan"])  #个别州的缩写
print("florida's abbreviation is:",states["florida"])

print("-"*10)
for state,abbrev in list(states.items()):  #所有州的缩写,语法解释见下方注释1
    print(f"{state} is abbreviated {abbrev}.")

# 输出州对应的城市
print("-"*10)
print("florida has:",cities[states["florida"]])  #个别州对应的城市

print("-"*10)
for abbrev,city in list(cities.items()): # 所有州的缩写
    print(f"{abbrev} has city {city}.")

#同时输出州的缩写和州对应的城市
print("-"*10)
for state,abbrev in list(states.items()):
    print(f"{state} state is abbreviated {abbrev}, and has city {cities[abbrev]}.")

print("-"*10)
def abbrev(state):   #注释4,定义函数,输入州名,输出州名的简写
    abbrev=states.get(state)
    if not abbrev:   #注释3
        print(f"sorry,it's {abbrev}.")
    else:
        print(f"{state} state is abbreviated {abbrev}.")

abbrev("florida")
abbrev("texas")

print("-"*10,"method 1")
city=cities.get("TX","Doesn't exist")
print(f"the city for the state 'TX' is:{city}.")  #注意'TX'需用单引号

print("-"*10,"method 2")  #定义函数,输入州名,输出州所在的城市
def city(state):
    city=cities.get(states.get(state))
    if not city:
        print(f"sorry,doesn't exist.")
    else:
        print(f"the city for the state {state} is:{city}.")

city("texas")
city("florida")
----------
michigan's abbreviation is: mi
florida's abbreviation is: fl
----------
oregon is abbreviated or.
florida is abbreviated fl.
california is abbreviated ca.
newyork is abbreviated ny.
michigan is abbreviated mi.
----------
florida has: jacksonville
----------
ca has city san francisco.
mi has city detroit.
fl has city jacksonville.
ny has city new york.
or has city portland.
----------
oregon state is abbreviated or, and has city portland.
florida state is abbreviated fl, and has city jacksonville.
california state is abbreviated ca, and has city san francisco.
newyork state is abbreviated ny, and has city new york.
michigan state is abbreviated mi, and has city detroit.
----------
florida state is abbreviated fl.
sorry,it's None.
---------- method 1
the city for the state 'TX' is:Doesn't exist.
---------- method 2
sorry,doesn't exist.
the city for the state florida is:jacksonville.

注释1

Python 字典 items() 方法以列表返回视图对象,是一个可遍历的key/value 对。

dict.keys()、dict.values() 和 dict.items() 返回的都是视图对象( view objects),提供了字典实体的动态视图,这就意味着字典改变,视图也会跟着变化。

视图对象不是列表,不支持索引,可以使用 list() 来转换为列表。

我们不能对视图对象进行任何的修改,因为字典的视图对象都是只读的。

注释2

字典 (Dictionary)get()函数返回指定键的值,如果值不在字典中,返回默认值。

语法:dict.get(key, default=None),参数 key–字典中要查找的键,default – 如果指定键的值不存在时,返回该默认值。

注释3

if not 判断是否为NONE,代码中经常会有判断变量是否为NONE的情况,主要有三种写法:

第一种: if x is None(最清晰)

第二种: if not x

第三种: if not x is None

注释4 将字符串值传递给函数

def printMsg(str):
#printing the parameter
print str

printMsg(“Hello world!”)

#在输入字符串时,需要带引号

1.3 练习:写中国省份与省份缩写对应的字母代码

sx={
    "广东":"粤",
    "福建":"闽",
    "江西":"赣",
    "安徽":"皖"
}

sx["云南"]="滇"
sx["贵州"]="黔"
#定义函数,输入省份,输出省份缩写

def suoxie(province):
    suoxie=sx.get(province)
    if not suoxie:
        print(f"对不起,我还没在系统输入{province}省的缩写。")
    else:
        print(f"{province}省的缩写是:{suoxie}")

suoxie("广东")
suoxie("黑龙江")
广东省的缩写是:粤
对不起,我还没在系统输入黑龙江省的缩写。

2.元组tuple

元组类似于列表,内部元素用逗号分隔。但是元组不能二次赋值,相当于只读列表。

tuple=('runoob',786,2.23,'john',70.2)
tinytuple=(123,'john')

print(tuple[1:3])  #和list类似
print(tuple*2)
print(tuple+tinytuple)
(786, 2.23)
('runoob', 786, 2.23, 'john', 70.2, 'runoob', 786, 2.23, 'john', 70.2)
('runoob', 786, 2.23, 'john', 70.2, 123, 'john')

元组是不允许更新的:

tuple=('runoob',786,2.23,'john',70.2)
tuple[2]=1000
print(tuple)
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-7-ae7d4b682735> in <module>
      1 tuple=('runoob',786,2.23,'john',70.2)
----> 2 tuple[2]=1000
      3 print(tuple)

TypeError: 'tuple' object does not support item assignment

3.布尔类型bool

True and True  #与运算
1==1 and 1==2
1==1 or 2!=1  # 或运算,!=表示不等于
not (True and False)   # 非运算
not (1==1 and 0!=1)

4.读写文件

close:关闭文件

read:读取文件内容,可将读取结果赋给另一个变量

readline:只读取文本文件的一行内容

truncate:清空文件

write(‘stuff’):给文件写入一些“东西”

seek(0):把读/写的位置移到文件最开头

4.1 用命令做一个编辑器

from sys import argv  #引入sys的部分模块argv(参数变量)

filename = "C:\\Users\\janline\\Desktop\\test\\euler笨办法学python"   #给自己新建的文件命名,注意文件地址要补双杠

print(f"we're going to erase {filename}.")  #格式化变量filename,并打印出来
print("if you don't want that, hit ctrl-c(^c).")
print("if you do want, hit return. ")

input("?")  # 输出"?",并出现输入框

print("opening the file...")
target=open(filename,'w')   # w表示以写的模式打开,r表示以读的模式打开,a表示增补模式,w+表示以读和写的方式打开,open(filename)默认只读

print("truncating the file. Goodbye!")
target.truncate()   #在变量target后面调用truncate函数(清空文件)

print("now I'm going to ask you for three lines.")

line1=input("line 1: ")   #输出"line1:",接收输入内容并存入变量line1中
line2=input("line 2: ")
line3=input("line 3: ") 

print("I'm going to write these to the file.")

target.write(line1)   ##在变量target后面调用write函数,写入变量line1中的内容,注意写入的内容需是英文
target.write("\n")  #  \n换行
target.write(line2)
target.write("\n")
target.write(line3)
target.write("\n")

print("and finally, we close it.")
target.close()   #在变量target后面调用close函数,关闭文件
we're going to erase C:\Users\janline\Desktop\test\euler笨办法学python.
if you don't want that, hit ctrl-c(^c).
if you do want, hit return.
?return
opening the file...
truncating the file. Goodbye!
now I'm going to ask you for three lines.
line 1: address name should be double slacked
line 2: see clearly for what problem happened
line 3: look for answers by searching
I'm going to write these to the file.
and finally, we close it.

用编辑器打开创建的文件,结果如下图:

4.2 练习写类似的脚本

使用read和argv来读取创建的文件:

filename="C:\\Users\\janline\\Desktop\\test\\笨办法学python\\test.txt"

txt=open(filename,'w+')

print("Let's read the file")
print("Let's write the file")

line1=input("line1: ")
line2=input("line2: ")

print("Let's write these in the file")
print("\n") 

txt.write(line1)
txt.write("\n")
txt.write(line2)
txt.write("\n")

print(txt.read())

txt.close()
Let's read the file
Let's write the file
line1: read and write file are complicated
line2: come on, it's been finished!
Let's write these in the file

打开文件结果如下:

4.3 用一个target.write()来打印line1、line2、line3

from sys import argv  #引入sys的部分模块argv(参数变量)

filename = "C:\\Users\\janline\\Desktop\\test\\euler笨办法学python"   #给自己新建的文件命名,注意文件地址要补双杠

print(f"we're going to erase {filename}.")  #格式化变量filename,并打印出来
print("if you don't want that, hit ctrl-c(^c).")
print("if you do want, hit return. ")

input("?")  # 输出"?",并出现输入框

print("opening the file...")
target=open(filename,'w')   # w表示以写的模式打开,r表示以读的模式打开,a表示增补模式,w+表示以读和写的方式打开,open(filename)默认只读

print("truncating the file. Goodbye!")
target.truncate()   #在变量target后面调用truncate函数(清空文件)

print("now I'm going to ask you for three lines.")

line1=input("line 1: ")   #输出"line1:",接收输入内容并存入变量line1中
line2=input("line 2: ")
line3=input("line 3: ") 

print("I'm going to write these to the file.")

target.write(line1+"\n"+line2+"\n"+line3+"\n")   #见注释

print("and finally, we close it.")
target.close()   #在变量target后面调用close函数,关闭文件
we're going to erase C:\Users\janline\Desktop\test\euler笨办法学python.
if you don't want that, hit ctrl-c(^c).
if you do want, hit return.
?return
opening the file...
truncating the file. Goodbye!
now I'm going to ask you for three lines.
line 1: 1
line 2: 2
line 3: 3
I'm going to write these to the file.
and finally, we close it.

注释

Python 中的文件对象提供了 write() 函数,可以向文件中写入指定内容。该函数的语法格式:file.write(string)。其中,file 表示已经打开的文件对象;string 表示要写入文件的字符串

打开结果如下:

4.4 Q&A

1.为什么我们需要给open多赋予一个’w’参数

open()只有特别指定以后它才会进行写入操作。

open() 的默认参数是open(file,‘r’) 也就是读取文本的模式,默认参数可以不用填写。

如果要写入文件,需要将参数设为写入模式,因此需要用w参数。

2.如果你用w模式打开文件,那么你还需要target.truncate()吗

Python的open函数文档中说:“It will be truncated when opened for writing.”,也就是说truncate()不是必须的。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • python读写文件with open的介绍

    目录 一.案例一(读取) 1.读取文件 基本实现 2.读取文件 中级实现 3.读取文件 终极实现 二.案例二(写入) 1..写入文件 基本实现 2.写入文件终极实现 简介: 使用python的过程中肯定少不了读取文件的操作,传统的形式是使用 直接打开.然后在操作.然后再关闭,这样代码量稍微大些不说,一旦在操作步骤中出现报错,则无法进行文件的关闭: 一.案例一(读取) 首先创建一个我们要读写的txt文件 txt内容如下: z天赐复习文件读写 博客园地址:https://www.cnblogs.co

  • python字符串,元组,列表,字典互转代码实例详解

    python字符串,元组,列表,字典互相转换直接给大家上代码实例 #-*-coding:utf-8-*- #1.字典 dict = {'name': 'Zara', 'age': 7, 'class': 'First'} #字典转为字符串,返回:<type 'str'> {'age': 7, 'name': 'Zara', 'class': 'First'} print type(str(dict)), str(dict) #字典可以转为元组,返回:('age', 'name', 'class

  • Python读写文件基础知识点

    在 Python 中,读写文件有 3 个步骤:  1.调用 open()函数,返回一个 File 对象.  2.调用 File 对象的 read()或 write()方法.   3.调用 File 对象的 close()方法,关闭该文件. 新建一个sj.txt文档,内容为hello. 输入代码: helloFile=open('F:\\sj.txt') 调用open将返回一个File对象.File对象代表计算机中的一个文件,它只是Python中另一种类型的值. 有了File对象,就可以开始从它读

  • Python 读写文件的操作代码

    Python读写文件模式 1.r 打开只读文件,该文件必须存在. 2.r+ 打开可读写的文件,该文件必须存在. 3.w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失.若文件不存在则建立该文件. 4.w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失.若文件不存在则建立该文件. 5.a 以附加的方式打开只写文件.若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留. 6.a+ 以附加方式打开可读写的文件.若文件不存在,则会

  • python中必会的四大高级数据类型(字符,元组,列表,字典)

    一. 字符串 生活中我们经常坐大巴车,每个座位一个编号,一个位置对应一个下标. 字符串中也有下标,要取出字符串中的部分数据,可以用下标取. python中使用切片来截取字符串其中的一段内容,切片截取的内容不包含结束下标对应的数据. 切片使用语法:[起始下标:结束下标:步长] ,步长指的是隔几个下标获取一个字符. 注意:下标会越界,切片不会 常用函数 练习: Test='rodma ' print(type(Test)) print('Test的一个字符串%s'%Test[0])#跟数组差不多 #

  • Python学习笔记之字典,元组,布尔类型和读写文件

    目录 1.字典dict 1.1列表和字典的区别 1.2字典示例 1.3练习:写中国省份与省份缩写对应的字母代码 2.元组tuple 3.布尔类型bool 4.读写文件 4.1用命令做一个编辑器 4.2练习写类似的脚本 4.3用一个target.write()来打印line1.line2.line3 4.4Q&A 1.为什么我们需要给open多赋予一个’w’参数 2.如果你用w模式打开文件,那么你还需要target.truncate()吗 总结 1.字典dict 不同于列表只能用数字获取数据,字典

  • Python学习笔记基本数据结构之序列类型list tuple range用法分析

    本文实例讲述了Python学习笔记基本数据结构之序列类型list tuple range用法.分享给大家供大家参考,具体如下: list 和 tuple list:列表,由 [] 标识: 有序:可改变列表元素 tuple:元组,由 () 标识: 有序:不可改变元组元素(和list的主要区别) list 和 tuple 的创建: print([]) # 空list print(["a",1,True]) # 元素类型不限 print([x for x in range(0,6)]) #

  • python学习笔记:字典的使用示例详解

    经典字典使用函数dict:通过其他映射(比如其他字典)或者(键,值)这样的序列对建立字典.当然dict成为函数不是十分确切,它本质是一种类型.如同list. 复制代码 代码如下: items=[('name','zhang'),('age',42)]d=dict(items)d['name'] len(d):返回项的数量d[k]:返回键k上面的值.d[k]=v:将k对应的值设置为k.del d[k]:删除字典中的这一项.k in d:检查d中是否含有键为k的项.注:只能查找键,不能查找值.简单的

  • Python学习笔记之For循环用法详解

    本文实例讲述了Python学习笔记之For循环用法.分享给大家供大家参考,具体如下: Python 中的For循环 Python 有两种类型的循环:for 循环和 while 循环.for 循环用来遍历可迭代对象. 可迭代对象是每次可以返回其中一个元素的对象, 包括字符串.列表和元组等序列类型,以及字典和文件等非序列类型.还可以使用迭代器和生成器定义可迭代对象 For 循环示例: # iterable of cities cities = ['new york city', 'mountain

  • 快速入门python学习笔记

    本篇不是教给大家如何去学习python,有需要详细深入学习的朋友可以参阅:Python基础语言学习笔记总结(精华)本文通过一周快速学习python入门知识总计了学习笔记和心得,分享给大家. ##一:语法元素 ###1.注释,变量,空格的使用 注释 单行注释以#开头,多行注释以''开头和结尾 变量 变量前面不需要声明数据类型,但是必须赋值 变量命名可以使用大小写字母,数字和下划线的组合,但是首字母只能是大小写字母或者下划线,不能使用空格 中文等非字母符号也可以作为名字 空格的使用 表示缩进关系的空

  • Python学习笔记之自定义函数用法详解

    本文实例讲述了Python学习笔记之自定义函数用法.分享给大家供大家参考,具体如下: 函数能提高应用的模块性,和代码的重复利用率.Python提供了许多内建函数,比如print()等.也可以创建用户自定义函数. 函数定义 函数定义的简单规则: 函数代码块以def关键词开头,后接函数标识符名称和圆括号(),任何传入参数和自变量必须放在圆括号中间 函数内容以冒号起始,并且缩进 若有返回值,Return[expression] 结束函数:不带return 表达式相当于返回None 函数通常使用三个单引

  • Python学习笔记之列表和成员运算符及列表相关方法详解

    本文实例讲述了Python学习笔记之列表和成员运算符及列表相关方法.分享给大家供大家参考,具体如下: 列表和成员运算符 列表可以包含我们到目前为止所学的任何数据类型并且可以混合到一起. lst_of_random_things = [1, 3.4, 'a string', True] # 这是一个包含 4 个不同类型元素的列表 print(lst_of_random_things[0]) # 1 获取上述列表的第一个值和最后一个值 print(lst_of_random_things[0]) #

  • Python学习之列表和元组的使用详解

    目录 列表和元组简介 列表学习要点 列表的声明语法 列表的读取 列表操作 列表元素的修改和删除 列表元素合并 列表元素顺序变化 元组学习要点 元组基本知识 元组的基本操作 列表和元组简介 如果说在 Python 语言中找一个最优秀的数据类型,那无疑是列表,如果要在推荐一个,那我选择元组,本篇博客我们的重心会放在列表上,元组可以看成不能被修改的列表,所以作为赠品 进行学习即可. 列表是一种非常灵活的数据结构,可以弥补前文字符串类型的很多不足. 正式学习前,还需要记住两个英文单词,列表(list),

  • Python学习笔记整理3之输入输出、python eval函数

    1. python中的变量: python中的变量声明不需要像C++.Java那样指定变量数据类型(int.float等),因为python会自动地根据赋给变量的值确定其类型.如 radius = 20,area = radius * radius * 3.14159 ,python会自动的将radius看成"整型",area看成"浮点型".所以编程时不用再像之前那样小心翼翼的查看数据类型有没有出错,挺人性化的. 2. input和print: 先贴个小的程序 #

  • Python学习笔记之pandas索引列、过滤、分组、求和功能示例

    本文实例讲述了Python学习笔记之pandas索引列.过滤.分组.求和功能.分享给大家供大家参考,具体如下: 解析html内容,保存为csv文件 //www.jb51.net/article/162401.htm 前面我们已经把519961(基金编码)这种基金的历史净值明细表html内容抓取到了本地,现在我们还是需要 解析html,取出相关的值,然后保存为csv文件以便pandas来统计分析. from bs4 import BeautifulSoup import os import csv

随机推荐