python容器类型——字典{dict}

python容器类型——字典{dict},第1张

python容器类型——字典{dict}

文章目录
  • python容器类型——字典{dict}
    • 一、特点
    • 二、定义
    • 三、字典的基本 *** 作
      • 1、查看
      • 2、增加、修改
      • 3、删除
      • 4、合并字典
      • 5、成员关系
      • 6、遍历
    • 四、练习

一、特点
  • 字典是Python中一个键值映射的数据结构
  • 字典是无序的
  • 字典是可变对象
  • key必须是唯一的, so 天生去重
二、定义
  • 元组通过花括号中用键/值对用冒号分割,而各个对用逗号分割
  • 定义空字典
singer_null = {}
print(singer_null,type(singer_null))
singer_null = dict()
print(singer_null,type(singer_null))
  • 字典的key必须是可hash对象
  • python中所有字符串、数字、元组、布尔值、None都是可hash对象
  • 字典的value可以是任何值
# key   => hashable 可hash对象 => 不可变对象(可变对象=> list)
# value => 任何类型数据
#list不可以作为key
#TypeError: unhashable type: 'list'
singer_song = {1:1,'张韶涵':True,['汪峰']:'普通迪斯高'}
TypeError                                 Traceback (most recent call last)
Input In [6], in <cell line: 3>()
      1 #list不可以作为key
      2 #TypeError: unhashable type: 'list'
----> 3 singer_song = {1:1,'张韶涵':True,['汪峰']:'普通迪斯高'}

TypeError: unhashable type: 'list'
singer_song = {1:1,'张韶涵':True,('汪峰',):'普通迪斯高','汪峰2':['张韶涵','汪峰','李圣杰']}
print(singer_song)

#{1: 1, '张韶涵': True, ('汪峰',): '普通迪斯高', '汪峰2': ['张韶涵', '汪峰', '李圣杰']}
#boole值可以作为key
#重复定义key时会自动覆盖前一个value值
三、字典的基本 *** 作 1、查看
  • 用法1:dicts[key] => 当key不存在时,会引了KeyError错误

    songs = {
        '孤勇者': {'singer':'Eason', 'count':100},
        '青花瓷': {'singer':'周杰伦', 'count':101},
        '荷塘月色':{'singer':'凤凰传奇', 'count':99}
    }
    # 通过key取值
    #当key存在时
    print(songs["青花瓷"])
    
    #{'singer': '周杰伦', 'count': 101}
    
    #当key不存在时
    print(songs["青花瓷"])
    ---------------------------------------------------------------------------
    KeyError                                  Traceback (most recent call last)
    Input In [2], in <cell line: 7>()
          1 songs = {
          2     '孤勇者': {'singer':'Eason', 'count':100},
          3     '青花瓷': {'singer':'周杰伦', 'count':101},
          4     '荷塘月色':{'singer':'凤凰传奇', 'count':99}
          5 }
          6 # 通过key取值
    ----> 7 print(songs["青花瓷1"])
    
    KeyError: '青花瓷1'
    
  • 用法2:dicts.get(key, default) => 当key不存在时,返回default值

    songs = {
        '孤勇者': {'singer':'Eason', 'count':100},
        '青花瓷': {'singer':'周杰伦', 'count':101},
        '荷塘月色':{'singer':'凤凰传奇', 'count':99}
    }
    print(songs.get("孤勇者"))
    print(songs.get("孤勇者1",'no'))
    
    #{'singer': 'Eason', 'count': 100}
    #no
    
2、增加、修改

用法1:dicts[key] = value

  • 当key不存在时,表示增加一个键值对
  • 当key存在时,表示修改对应的value值
songs = {
    '孤勇者': {'singer':'Eason', 'count':100},
    '青花瓷': {'singer':'周杰伦', 'count':101},
    '荷塘月色':{'singer':'凤凰传奇', 'count':99}
}
# key存在,修改key对应value值
songs["青花瓷"]={}
# key不存在,新增一个key
songs["恰恰恰"]={}
3、删除
  • 用法1:dicts.pop(key)
songs = {
    '孤勇者': {'singer':'Eason', 'count':100},
    '青花瓷': {'singer':'周杰伦', 'count':101},
    '荷塘月色':{'singer':'凤凰传奇', 'count':99}
}
songs.pop("荷塘月色1", None)
print(songs)

songs.pop("荷塘月色")
print(songs)

#{'孤勇者': {'singer': 'Eason', 'count': 100}, '青花瓷': {'singer': '周杰伦', 'count': 101}, '荷塘月色': {'singer': '凤凰传奇', 'count': 99}}
#{'孤勇者': {'singer': 'Eason', 'count': 100}, '青花瓷': {'singer': '周杰伦', 'count': 101}}
  • 用法2:dicts.popitem():即后进先出
help (songs.popitem())
Help on tuple object:

class tuple(object)
 |  tuple(iterable=(), /)
 |  
 |  Built-in immutable sequence.
 |  
 |  If no argument is given, the constructor returns an empty tuple.
 |  If iterable is specified the tuple is initialized from iterable's items.
 |  
 |  If the argument is a tuple, the return value is the same object.


songs = {
    '孤勇者': {'singer':'Eason', 'count':100},
    '青花瓷': {'singer':'周杰伦', 'count':101},
    '荷塘月色':{'singer':'凤凰传奇', 'count':99}
}

print(songs.popitem())
print(songs.popitem())
print(songs.popitem())


#('荷塘月色', {'singer': '凤凰传奇', 'count': 99})
#('青花瓷', {'singer': '周杰伦', 'count': 101})
#('孤勇者', {'singer': 'Eason', 'count': 100})
4、合并字典
  • 用法1:dict1.update(dict2) => 将dict2合并到dict1
#对自身的字典进行了修改
singer_song1 = {"李俊杰":"痴心绝对","张韶涵":"阿刁"}
singer_song2 = {"汪峰":"当我想你的时候"}
#对自己singer_song1 *** 作
print(singer_song1.update(singer_song2))
print(singer_song1)

#None
#{'李俊杰': '痴心绝对', '张韶涵': '阿刁', '汪峰': '当我想你的时候'}
  • 用法2:dict(dict1, **dict2) => 将dict1与dict2合并生成一个新字典
#没有对自身的字典进行修改,是生成一个新的字典
singer_song1 = {"李俊杰":"痴心绝对","张韶涵":"阿刁"}
singer_song2 = {"汪峰":"当我想你的时候"}
#将字典1和2进行合并到一个新的字典中
new_dict = dict(singer_song1,**singer_song2)
print(new_dict)

#{'李俊杰': '痴心绝对', '张韶涵': '阿刁', '汪峰': '当我想你的时候'}
5、成员关系
  • in 和not in,默认是和key值进行对比,放回bool值
singer_song1 = {"李俊杰":"痴心绝对","张韶涵":"阿刁"}
print("李俊杰" in singer_song1)
print("李俊杰1" in singer_song1)
print("当我想你的时候" not in singer_song1.values())

#True
#False
#True
6、遍历
singer_song = {'李俊杰': '痴心绝对', '张韶涵': '阿刁', '汪峰': '当我想你的时候'}
print(singer_song.values())
for value in singer_song.values():
    print(value)
    
print(singer_song.items())
for item in singer_song.items():
    print(item)
    
print(singer_song.keys())
for key in singer_song.keys():
    print(key)
    
dict_values(['痴心绝对', '阿刁', '当我想你的时候'])
痴心绝对
阿刁
当我想你的时候
dict_items([('李俊杰', '痴心绝对'), ('张韶涵', '阿刁'), ('汪峰', '当我想你的时候')])
('李俊杰', '痴心绝对')
('张韶涵', '阿刁')
('汪峰', '当我想你的时候')
dict_keys(['李俊杰', '张韶涵', '汪峰'])
李俊杰
张韶涵
汪峰
四、练习

xiyouji={
    'BOSS':'唐僧',
    'CTO':'悟空',
    'CFO': '八戒',
    '搬砖':'沙僧',
    '苦力':'白龙马'
}
print(xiyouji['CTO'])
print(xiyouji['BOSS'])
for key in xiyouji:
       print(f"{key}{xiyouji[key]}")

name = input("请输入你要查询的角色:")
if name in xiyouji.values():
    print(f"{name}在西游记中")
else:
    print(f"{name}不在西游记中")

print("欢迎使用用户检测系统")
# 数据定义放在循环外
users = {
    'root': '123456',
    'admin': 'admin'
}


while True:
    username = input("请输入用户名:")
    if username == "exit":
        print("你已安全退出")
        break
    password = input("请输入密码:")

    if username in users and password == users[username]:
        print("登录成功")
        break
    else:
        print("登录失败")

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/713904.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-24
下一篇 2022-04-24

发表评论

登录后才能评论

评论列表(0条)

保存