Python学习(字典)

一、字典

字典是列表以为Python中使用最灵活的内置数据类型

是一种可变的数据类型

和列表的区别:

  • 列表有序,字典无序
  • 列表通过索引(偏移)访问元素,字典通过键(key)访问元素
1.1 基本格式
dic = {key1:value1,key2:value2,...,keyn:valuen}

值可以去任意数据类型,但键不可以,必须为不可变数据类型,即key必须可哈希。

如:

info = {"id":20190101,"name":"Tom","age":18}
  • 特点
    • key:value,键值对之间用冒号连接
    • key:value组成字典的一个元素
    • 键值对之间用逗号隔开
    • 整个字典用花括号包裹
1.2 字典的创建
  • 空字典
dic = {}
  • 多元素字典
info = {"id":20190101,"name":"Tom","age":18}
  • 强制转化
dic = dict(id = 20190101,name = "Tom",age = 18)

zip( )函数

key = ("id","name","age")
value = (20190101,"Tom",18)
test = list(zip(key,value))
print(test)     #[('id', 20190101), ('name', 'Tom'), ('age', 18)]
test2 = dict(test)
print(test2)    #{'id': 20190101, 'name': 'Tom', 'age': 18}
test3 = dict(zip(key,value))
print(test3)    #{'id': 20190101, 'name': 'Tom', 'age': 18}
  • 通过字典的fromkeys方法创建字典

格式

dict.fromkeys(seq,val=None)
  • 创建并返回一个字典
    • 以seq中的元素作为该字典的键
    • val的值作为该字典中所有键对应的初始值;若不提供,默认为None
dic = dict.fromkeys(["Tom","Jack","Lucy"],666666)
print(dic)      #{'Tom': 666666, 'Jack': 666666, 'Lucy': 666666}
1.3 字典的常见操作
1.3.1 增
  • 直接添加键值对(dic[key] =value),不存在加入键值对,存在则修改值
dic = {}
dic["id"] = 20190101
print(dic)      #{'id': 20190101}
dic["id"] = 20190102
print(dic)      #{'id': 20190102}
  • dict.update(dic):把字典dic中的键值对更新到dict中,不存在加入键值对,存在则修改值
dic = {"job":"IT","hobby":"Read","name":"Jack"}
dict = {"id":20190101,"name":"Tom","age":22}
dict.update(dic)
print(dict)
1.3.2 删
  • dict.pop(key,[default]):有key,删除并返回;不存在,给出默认值则返回默认值,不给默认值会报错
dict = {"id":20190101,"name":"Tom","age":22}
print(dict.pop("age"))  #22
print(dict)             #{'id': 20190101, 'name': 'Tom'}

dict = {"id":20190101,"name":"Tom","age":22}
print(dict.pop("job",1))    #1
print(dict)                 #{'id': 20190101, 'name': 'Tom', 'age': 22}
  • dict.popitem( ):随机删除一对键值对(实际上是能看到的最后一对),有返回值,元组
dict = {"id":20190101,"name":"Tom","age":22}
print(dict.popitem())   #('age', 22)
print(dict)             #{'id': 20190101, 'name': 'Tom'}
key,value = dict.popitem()
print(key,value)        #name Tom
  • del dict[key]:删除指定的键对应的键值对,不给键则删除字典
  • dict.clear( ):清空字典
1.3.3 改
  • 直接修改
dict = {"id":20190101,"name":"Tom","age":22}
dict["id"] = 20190201
print(dict)         #{'id': 20190201, 'name': 'Tom', 'age': 22}
  • dict.setdefault( ):键存在,不改动,返回字典中的值;不存在,在字典中添加相应的键值对,并返回值
dict = {"id":20190101,"name":"Tom","age":22}
print(dict.setdefault("name","Jack"))   #Tom
print(dict)                             #{'id': 20190101, 'name': 'Tom', 'age': 22}
print(dict.setdefault("job","IT"))      #IT
print(dict)                             #{'id': 20190101, 'name': 'Tom', 'age': 22, 'job': 'IT'}
1.3.4 查

字典值得访问

  • 通过键访问值(不存在会报错)
dict = {"id":20190101,"name":"Tom","age":22}
print(dict["id"])           #20190101
  • dict.get( )访问值
    • 语法格式 dict.get(key[,default])
    • 不确定字典中是否存在某个键而又想对其进行操作
    • 当key不存在的时候,不会抛出异常,返回None
dict = {"id":20190101,"name":"Tom","age":22}
print(dict.get("id"))       #20190101
print(dict.get("job"))      #None
遍历
  • dict.keys( )
  • dict.value( )
  • dict.items( )
dict = {"id": 20190101, "name": "Tom", "age": 22}
for key in dict.keys():
    print(key, end=",")             #id,name,age,
for value in dict.values():
    print(value, end=",")           #20190101,Tom,22,
for items in dict.items():
    print(items,end=",")            #('id', 20190101),('name', 'Tom'),('age', 22),
for key, value in dict.items():
    print(key, value, end=",")      #id 20190101,name Tom,age 22,

二、练习:

  1. 收录不定量信息,以 [{‘id’: 20190101, ‘name’: ‘Tom’, ‘age’: 19}, {‘id’: 20190102, ‘name’: ‘Jack’, ‘age’: 18}…] 的格式输出
li = []
while True:
    dic = {}
    id = input("请输入id(输入q退出):")
    if id == 'q':
        break
    name = input("请输入name:")
    age = input("请输入age:")
    dic["id"] = int(id)
    dic["name"] = name
    dic["age"] = int(age)
    li.append(dic)
print(li)
  1. 现有列表li = [23, 34, 45, 22, 67, 89, 90, 99, 66, 45],将列表内的元素按大于等于或小于分成两组,以 {">=60":[ ],"<60":[ ]}的格式输出
dic = {">=60":[],"<60":[]}
li = [23, 34, 45, 22, 67, 89, 90, 99, 66, 45]
for i in li:
    if i >= 60:
        dic[">=60"].append(i)
    else:
        dic["<60"].append(i)
print(dic)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值