Python基础3

Python基础3

1.字典

Python中的字典是python的一种数据结构,它的本质是key和value以及其对应关系的一种集合,一个key可以对应一个多个value。

Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。
  • 无序的集合

  • 字典中的元素通过键来存取,而不是通过偏移存取

  • 字典可以在原处增长或是缩短(无需生成一份拷贝),可以包含任意类型的对象

  • 支持任意深度的嵌套(可以包含列表和其他的字典)

  • 属于可变映射类型(通过给索引赋值,在原处进行修改)

    常见字典常量和操作

    D1={} 空字典
    D2={'span':2.'gan':3} 两项目字典
    D3={'food':{'meat':1,'egg':2}} 嵌套
    D2['eggs'] 以键进行索引运算
    D3['food']['egg']
    

    创建字典(字典由键和对应值成对组成。字典也被称作关联数组或哈希表。基本语法如下:)

    D1={'aa':1,'bb':2,'cc':3}
    print(D1)
    D1={'abc':123}
    print(D1)
    D2 = { 'abc': 123, 98.6: 37 }
    print(D2)
    注意:
    每个键与值用冒号隔开(:),每对用逗号,每对用逗号分割,整体放在花括号中({})。
    键必须独一无二,但值则不必。
    值可以取任何数据类型,但必须是不可变的,如字符串,数或元组。
    

    访问字典里的值(把相应的键放入熟悉的方括弧)

    D1={'aa':1,'bb':2,'cc':3}
    print("D1['aa']:",D1['aa'])
    运行结果:
    D1['aa']: 1
    

    修改字典(向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值)

    D1={'aa':1,'bb':2,'cc':3}
    D1['aa']=11 #修改
    D1['dd']=4  #增加
    print(D1)
    运行结果:
    {'aa': 11, 'bb': 2, 'cc': 3, 'dd': 4}
    
    del D1['aa']; #删除'aa'的条目
    print(D1)
    运行结果:
    {'bb': 2, 'cc': 3, 'dd': 4}
    
    D1.clear() #清空词典所有条目
    print(D1)
    运行结果:
    {}
    del D1 #删除字典
    

    字典内置函数&方法

    内置函数
    cmp(dict1, dict2)  #比较两个字典元素。
    len(dict)              #计算字典元素个数,即键的总数。
    str(dict)              #输出字典可打印的字符串表示。
    type(variable)     #返回输入的变量类型,如果变量是字典就返回字典类型。
    
    内置方法
    dict.clear()    #删除字典内所有元素
    dict.copy()    #返回一个字典的浅复制
    dict.fromkeys()    #创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
        D1={}.fromkeys(['name','age'])
        print(D1)
        运行结果:
        {'name': None, 'age': None}
    dict.get(key, default=None)    #返回指定键的值,如果值不在字典中返回default值
    	D2={'name':'sara','age':23}
    	print(D2.get('name'))
    	运行结果:
    	sara
    dict.has_key(key)    #如果键在字典dict里返回true,否则返回false
    dict.items()    #以列表返回可遍历的(键, 值) 元组数组
    	D2={'name':'sara','age':23}
    	print(D2.items())
    	运行结果:
    	dict_items([('name', 'sara'), ('age', 23)])
    dict.keys()    #以列表返回一个字典所有的键
    	D2={'name':'sara','age':23}
    	print(D2.keys())
    	运行结果:
    	dict_keys(['name', 'age'])
    dict.update(dict2)    #把字典dict2的键/值对更新到dict里
    	>>> d={'x':1,'y':2,'z':3}
    	>>> f={'y':5}
    	>>> d.update(f)
    	>>> d
    	{'y': 5, 'x': 1, 'z': 3}	
    dict.values()    #以列表返回字典中的所有值
    	d={'x':1,'y':2,'z':3}
    	print(d.values())
    	运行结果:
    	dict_values([1, 2, 3])
    

2.set集合

​ set集合,是一个无序且不重复的元素集合。定义方式类似字典使用{}创建

     ~~~python

set={‘a’,‘b’,‘c’,‘a’,‘b’,‘d’,‘f’}#创建集合
print(set)
运行结果:
{‘b’, ‘d’, ‘a’, ‘f’, ‘c’}

set.add(‘sara’)#添加元素
运行结果:
{‘c’, ‘b’, ‘d’, ‘sara’, ‘a’, ‘f’}

set.clear()#清空所有元素
print(set)
运行结果:
set()

set={‘name’,‘age’,‘gender’}
set1=set.copy() #浅拷贝
print(set1)
运行结果:
{‘name’, ‘gender’, ‘age’}

set1={‘python’,‘java’,‘big data’}
set2={‘java’,‘c’,‘c++’}
set3=set1.difference(set2) #返回由两个或多个set中不同的元素组成一个新set
print(set3)
运行结果:
{‘big data’, ‘python’}

set.discard 删除指定元素,元素不存在不报错
set1={‘python’,‘java’,‘big data’}
set2=set1.discard(‘python’)
print(set1)
运行结果:
{‘big data’, ‘java’}

set.remove() 删除指定元素,元素不存在则报错
set.pop 随机指定集合元素可赋值其他容器(占位符)
set1={‘python’,‘java’,‘big data’}
set2=set1.pop()
print(set2)
运行结果:
java
set.intersection返回两个或多个set的交集,即两个或多个set中都存在的元素组成的set
set.isdisjoint 如果两个set没有交集,返回true
set.issubset 判断A集合是否是B集合的子集。
set.issupreset 判断A集合是否是B集合的父集。
set.symmetric_difference 返回A集合和B集合的差集
set.union 返回A集合和B集合的并集

3.file文件

打开和关闭文件

open 函数
file object = open(file_name [, access_mode][, buffering])

各个参数的细节如下:

  • file_name:file_name变量是一个包含了你要访问的文件名称的字符串值。
  • access_mode:access_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读®。
  • buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。
close()方法

File 对象的 close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。

当一个文件对象的引用被重新指定给另一个文件时,Python 会关闭之前的文件。用 close()方法关闭文件是一个很好的习惯。

fileObject.close()
读写文件(read()和write()方法来读取和写入文件)
write()方法(write()方法可将任何字符串写入一个打开的文件)
fileObject.write(string)
# 打开一个文件
fo = open("foo.txt", "w")
fo.write( "hello worle!"\n")
 
# 关闭打开的文件
fo.close()
read()方法(read()方法从一个打开的文件中读取一个字符串)
fileObject.read([count])
# 打开一个文件
fo = open("foo.txt", "r+")
str = fo.read(10)
print "读取的字符串是 : ", str
# 关闭打开的文件
fo.close()

读取一个文件,将文件中转换为字典,key值为学习项目,value值为一个负责人列表,并判断字典中是否有负责人负责多个学习项目

#读取代码
fr = open('G:\\homework.txt','r',encoding='UTF-8')
dic = {}
keys = [] #用来存储读取的顺序
lines=fr.readlines()
for line in lines:
    line= line.strip().split()
    key=line[0]
    v1=line[1]
    v2=line[2]
    v=v1+" "+v2
    keys.insert(-1,v1)
    keys.insert(-1,v2)
    dic1={}
    dic1=dic.fromkeys(key)
    i=0
    for k in dic1:
        dic1[k]=keys[i]
        i+=1
    list=[]
    for j in dic1.values():
        list.extend(v)
        new_set=set(list)
    if len(list)>len(new_set):
        print("有多个负责人负责多个项目!")
    else:
        print("无负责人负责多个项目!")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值