Python第四天笔记——字典

字典

字典是列表以外Python中使用最灵活的内置数据类型,是一种可变的数据类型。

与列表的区别:

  • 列表有序,字典无序;
  • 列表通过索引(偏移)访问元素,字典通过键(key)访问元素。
dict={'name1':"cl",'age':"18",'id':"20190201"}
print(len(dict))
print(dict["age"])

#输出结果:
3
cl

基本格式

key: value----->键值对

dict={key1:value1,key2:value2,...,keyn:valuen}

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

可哈希----->不可变;不可哈希----->可变;

特点

  • key: value,键值对之间用冒号连接
  • key: value 组成字典的一个元素
  • 键值对之间用逗号隔开(,)
  • 整个字典用花括号包裹({})

字典的创建

#空字典:

dict={}

#创建多元素字典:

1dict={'name':"cl",'age':"18",'id':"20190201"}
print(dict)
2、
key1,key2,key3="name","age","id"
value1,value2,value3="cl",18,20190201
dict1={key1:value1,key2:value2,key3:value3}
print(dict1)

#输出结果:
{'name': 'cl', 'age': 18, 'id': 20190201}

#强转:

1、
dic=dict(name="cl",age=18,id=20190201)
print(dic)

#输出结果:
{'name': 'cl', 'age': 18, 'id': 20190201}

2zip()
key=("name","age","id")
value=("cl",18,20190201)
tp=tuple(zip(key,value))
print(tp,type(tp))

#输出结果:
(('name', 'cl'), ('age', 18), ('id', 20190201)) <class 'tuple'>

3、
dic=dict(zip(key,value))
print(dic,type(dic))

#输出结果:
{'name': 'cl', 'age': 18, 'id': 20190201} <class 'dict'>

4print(dict((('name', 'cl'), ('age', 18), ('id', 20190201))))

#输出结果:
{'name': 'cl', 'age': 18, 'id': 20190201}

通过字典的fromkeys创建字典

#格式:

dict.fromkeys(seq,val=None)
  • 创建并返回一个字典
    • val的值作为该字典中所有键对应的初始值;若不提供,默认为None。
dict=dict.fromkeys(["Tom","Jack","lucy"],666)
print(dict)

#输出结果:
{'Tom': 666, 'Jack': 666, 'lucy': 666}

字典的常见操作

(1)增

  • 直接添加键值对(dic[key]=value)
    • 通过使用变量名[“键”]=“值”:
      • 如果key不存在,新建键值对(key: value)
      • 如果存在,则更新值(value)
  • dic. update(dict):把字典dict中的键值对(key: value)添加或更新到dic中
    • 两个字典的键完全不同,则将dict的键值对全部添加到dic中
    • 存在相同的键,则更新dic中对应的值
1、
dic={'id':'20190101','age':'19'}
dic["id"]=20190201
dic["name"]="cl"
dic["age"]=18
print(dic)

#输出结果:
{'id': 20190201, 'age': 18, 'name': 'cl'}

2、
dic.update({'class':'five'})
print(dic)

#输出结果:
{'id': 20190201, 'age': 18, 'name': 'cl', 'class': 'five'}

#例题:[{‘id’: ‘20190101’, ‘name’: ‘cl’, ‘age’: 18},

{‘id’: ‘20190201’, ‘name’: ‘sf’, ‘age’: 19},

{‘id’: ‘20190n01’, ‘name’: ‘…’, ‘age’: …}]

list=[]
while True:
   dict = {}
   id=input("请输入id:")
   dict["id"]=id
   name=input("请输入name:")
   dict["name"]=name
   age=int(input("请输入age:"))
   dict["age"] = age
   list.append(dict)
   flag=int(input("如果继续请输入1,如果退出请输入0:"))
   if flag==0:
       break
print(list)

#输出结果:
[{'id': '20190101', 'name': 'cl', 'age': 18}, {'id': '201910201', 'name': 'sf', 'age': 19}, {'id': '20190301', 'name': 'fl', 'age': 18}]

(2)删

  • dict. pop()
    • 格式:dict. pop(key[, default])
      • 如果key存在于dict中,删除并返回dict[value]
      • 如果不存在,给出默认值则返回默认值;否则,报错
dic1={'id': 20190201, 'age': 18, 'name': 'cl'}
print(dict1.pop('id'))
print(dict1.pop('job','student'))

#输出结果:
20190201
student
  • dict. popitem()
    • 随机删除一对键值对,并返回该键值对
    • 有返回值的,元组
1、
dict1={'id': 20190201, 'age': 18, 'name': 'cl'}
print(dict1.popitem())
print(dict1)

#输出结果:
('name', 'cl')
{'id': 20190201, 'age': 18}

2、
key,value=dict1.popitem()
print(dict1)

#输出结果:
name cl
{'id': 20190201, 'age': 18}
  • clear()
dict1.clear()
print(dict1)
  • del
del dict1
del dict1[key]

(3)改

  • 直接通过字典的key来更改value:
dic={'id': 20190201, 'age': 18, 'name': 'cl'}
dic['age']=20
print(dic)

#输出结果:
{'id': 20190201, 'age': 20, 'name': 'cl'}
  • dict.setdefault():
    • 键存在,不改动,返回字典中的值
    • 不存在,在字典中添加相应的键值对,并返回对应的值
dict={'id': 20190201, 'age': 18, 'name': 'cl'}
print(dict.setdefault('id','20190301')) #键存在
print(dict.setdefault('hobby','Sing')) #键不存在

#输出结果:
20190201
Sing
{'id': 20190201, 'age': 18, 'name': 'cl', 'hobby': 'Sing'}

(4)查

  • 直接通过字典的key访问value:
dic={'id': 20190201, 'age': 18, 'name': 'cl'}
print(dic['id']) #若存在返回对应的值
print(dic['hobby']) #若不存在,报错
  • dict.get():访问value
    • 格式:dict.get(key[,default])
    • 不确定字典中是否存在某个键而又想对其进行操作,比如获取值------>get方法
    • 当key不存在的时候,不会异常,而是返回None
print(dic.get('age',20))
print(dic.get('hobby'))
print(dic.get('hobby','Sing'))

#输出结果:
18
None
Sing

遍历

  • dict.keys()
  • dict.values()
  • dict.items()
dic={'id': 20190201, 'age': 18, 'name': 'cl'}
print(dic.values())
print(dic.keys())
print(dic.items())

#输出结果:
dict_values([20190201, 18, 'cl'])
dict_keys(['id', 'age', 'name'])
dict_items([('id', 20190201), ('age', 18), ('name', 'cl')])
for key in dic.keys():
    print(key,end=' ')

for value in dic.values():
    print(value,end=' ')

for item in dic.items():
    print(item,end=' ')

for key,value in dic.items():
    print(key,":",value)

#输出结果:
id age name 

20190201 18 cl 

('id', 20190201) ('age', 18) ('name', 'cl') 

id : 20190201
age : 18
name : cl

#例题

# li=[23,34,42,39,84,62,45,56,77,99]
# 输出{">=60":[],"<60":[]}

li=[23,34,42,39,84,62,45,56,77,99]
li1=[]
li2=[]
dict1={}
for i in li:
    if i >= 60:
        li1.append(i)
        dict1[">=60"] = li1
    else:
        li2.append(i)
        dict1["<60"] = li2
print(dict1)

#输出结果:
{'<60': [23, 34, 42, 39, 45, 56], '>=60': [84, 62, 77, 99]}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值