python字典

info = {"id": 20190101, "name": "Tom", "age": 18}  # key:value --->键值对
print(info)
'''
{"id": 20190101, "name": "Tom", "age": 18}
'''

字典是除列表以外python中使用最灵活的内置数据类型

字典是一种可变的数据类型

和列表的区别:

  • 列表有序, 字典无序

  • 列表通过索引(偏移)

  • 访问元素, 字典通过键(key)访问元素

字典的基本格式

dic = {key1: value1, key2: value2, ...keyn:valuen}
#值可以取任意类型, 但键不可以, 必须为不可变数据类型, 即key必须可哈希.
# 可哈希 --->不可变
# 不可哈希 --->可变

创建空列表

dic = {}
print(type(dic))
'''
<class 'dict'>
'''

往空字典中添加元素

dic = {}
key1, key2, key3 = "id", "name", "age"
value1, value2, value3 = 20190101, "Tom", 18
dic = {key1: value1, key2: value2, key3: value3}
print(dic)
'''
{'id': 20190101, 'name': 'Tom', 'age': 18}
'''

强转

zip()

key = ("id", "name", "age")
value = (20190101, "Tom", 18)
print(list(zip(key,value)))
tp = dict(list(zip(key, value)))
print(tp, type(tp))
print(dict([("id", 20190101), ("name", "Tom"), ("age", 18)]))  #转换的必须是一个对象
'''
[('id', 20190101), ('name', 'Tom'), ('age', 18)]
{'id': 20190101, 'name': 'Tom', 'age': 18} <class 'dict'>
{'id': 20190101, 'name': 'Tom', 'age': 18}
'''
dic = dict.fromkeys(["Tom", "Jack", "Lucy"], 666666)
print(dic)
'''
{'Tom': 666666, 'Jack': 666666, 'Lucy': 666666}
'''

往空字典中添加元素

dic = {}
dic["id"] = 20190101
dic["name"] = "Tom"
dic["age"] = 19
print(dic)
'''
{'id': 20190101, 'name': 'Tom', 'age': 19}
'''

往字典中添加新的键值对

dic1 = {"id": 20190101, "name": "Tom", "age": 19}
dic1["grade"] = 82  #原字典中没有的键
print(dic1)
print(dic1["id"])
'''
{'id': 20190101, 'name': 'Tom', 'age': 19, 'grade': 82}
'''

写一个程序,输入每组数对应的值,输出为[{“id”: 20190101, “name”: “Tom”, “age”: 19}, …{“id”: 20190101, “name”: “Tom”, “age”: 18}]的列表

li = []

while True:
     dic = {}
     id = int(input("id:"))
     name = input("name:")
     age = int(input("age:"))
     dic["id"] = id
     dic["name"] = name
     dic["age"] = age
     li.append(dic)
     flag=input("continue?(y/n,不区分大小写)")
     if flag.lower()=="n":
         break
 print(li)

dict.updata(dic)

把字典dic中的键值对(key:value)更新到dict中

  • 两个字典的键完全不同,则将dic的键值对全部添加到dict中
  • 存在相同键,则更新dict中对应的值
dic={"job":"IT","hobby":"Read"}
dic2={"name":"Jack","hobby":"Read"}
dict={"id":20190101,"name":"Tom"}
dict.update(dic2)
print(dict)

dict.pop()

  • 格式:dict.pop(key[,default])
    • 如果key存在于dict中,删除并返回dict[key]
    • 如果不存在,给出默认值就返回默认值,未给出默认值,报错

dict.popitem()

  • 随机删除一对键值对
  • 有返回值的,返回形式为元组
dict = {"id": 20190101, "name": "Tom", "age": 22}
print(dict.popitem())
key, value = dict.popitem()
print(dict)
print(key, value)  #最后剩下的键值对
'''
('age', 22)
{'id': 20190101}
name Tom
'''

del dict[key]

dict = {"id": 20190101, "name": "Tom", "age": 22}
del dict["age"]
print(dict)
'''
{'id': 20190101, 'name': 'Tom'}
'''
dict.clear()
dict = {"id": 20190101, "name": "Tom", "age": 22}
print(dict.clear())
print(dict)
'''
None
{}
'''

直接修改

dic = {"id": 20190101, "name": "Tom", "age": 22}
dic["id"] = 20190201
print(dic)
'''
{'id': 20190201, 'name': 'Tom', 'age': 22}
'''

dict.setdefault()

  • 键存在,不改动,返回字典中的值
  • 不存在,在字典中添加相应的键值对,并返回对应的值
dic = {"id": 20190101, "name": "Tom", "age": 22}
print(dic.setdefault("name", "Jack"))
print(dic)
print(dic.setdefault("salary", 12000))
print(dic)
'''
Tom
{'id': 20190101, 'name': 'Tom', 'age': 22}
12000
{'id': 20190101, 'name': 'Tom', 'age': 22, 'salary': 12000}
'''

字典值的访问

  • 直接通过字典的key访问value
dic = {"id": 20190101, "name": "Tom", "age": 22}
print(dic["id"])
print(dic["job"])  # 不存在的键,结果报错
'''
20190101
Traceback (most recent call last):
  File "D:/pycharm_test/day04/01.py", line 138, in <module>
    print(dic["job"])
KeyError: 'job'
'''

dict.get()访问value

语法格式 dict.get(key[,default])

  • 不确定字典中是否存在某个键而又想对其进行操作,比如获取值 -->get方法
  • 当key不存在的时候,不会跑出异常,返回None
dic = {"id": 20190101, "name": "Tom", "age": 22}
print(dic.get("id"))
print(dic.get("id", 20190201))
print(dic.get("salary"))  # 不存在,返回为None
print(dic)
print(dic.get("salary", 12000))  # 不会添加
print(dic)
'''
20190101
20190101
None
{'id': 20190101, 'name': 'Tom', 'age': 22}
12000
{'id': 20190101, 'name': 'Tom', 'age': 22}
'''

遍历

遍历出键dict.key()

dic = {"id": 20190101, "name": "Tom", "age": 22}
print(dic.keys(), type(dic.keys()))  # dic.key()取出的键为列表形式
'''
dict_keys(['id', 'name', 'age']) <class 'dict_keys'>
'''

for key in dic.keys():
    print(key)
'''
id
name
age
'''

遍历出值dict.values()

dic = {"id": 20190101, "name": "Tom", "age": 22}
for value in dic.values():
    print(value)
'''
20190101
Tom
22
'''

遍历出键值对dict.items()

dic = {"id": 20190101, "name": "Tom", "age": 22}
for item in dic.items():
    print(item)
'''
('id', 20190101)
('name', 'Tom')
('age', 22)
'''

dic = {"id": 20190101, "name": "Tom", "age": 22}
for key, value in dic.items():
    print(key, ":", value)
'''
id : 20190101
name : Tom
age : 22
'''

根据列表li=li = [23, 34, 45, 22, 67, 89, 90, 99, 66, 45]生成一个字典,根据数字和60的比较分类

li = [23, 34, 45, 22, 67, 89, 90, 99, 66, 45]
li1 = []
li2 = []
dic = {}
for i in li:
    if i >= 60:
        li1.append(i)
    else:
        li2.append(i)
dic[">=60"] = li1
dic["<60"] = li2
print(dic)
'''
{'>=60': [67, 89, 90, 99, 66], '<60': [23, 34, 45, 22, 45]}
'''
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值