Python字典

字典

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

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

  • 和列表的区别:

    • 列表有序而字典是无序的

    • 列表通过索引(偏移)访问元素,字典通过键(key)访问元素

1.字典的基本格式

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

特点:

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

2.字典的创建

# 空字典的创建
dic = {}
print(dic)
# <class 'dict'>

# 创建多元素字典
info = {"name":"Tom","age":18}
#key:value ---->键值对
print(info, len(info))
#{'name': 'Tom', 'age': 18} 2

3.强转

dic = dict(id = 20190101, name = 'Tom', age = 18)
print(dic)
# {'id': 20190101, 'name': 'Tom', 'age': 18}

#zip()
key = ('id','name','age')
value = (20190101,'Tom','18')
tp = dict(zip(key,value))
print(tp, type(tp))
#{'id': 20190101, 'name': 'Tom', 'age': '18'} <class 'dict'>
tp = dict(list(zip(key,value)))
print(tp, type(tp))
#{'id': 20190101, 'name': 'Tom', 'age': '18'} <class 'dict'>
#要强转需要把所有的key:value包括起来转化成字典

通过字典的fromkeys方法创建字典

格式:

dict.fromkeys(seq, val=Nune)

  • 创建并返回一个字典

    • 以seq中的元素作为该字典的键

    • val的值作为该字典中所有键对应的初始值,若不提供,默认为None

    dic = dict.fromkeys('Hello')
    print(dic)
    #{'H': None, 'e': None, 'l': None, 'o': None}
    
    dic = dict.fromkeys(['a','b','c'],12345)
    print(dic)
    #{'a': 12345, 'b': 12345, 'c': 12345}
    

4.字典的常见操作

(1)增

  • 直接添加键值对(dic[key] = value)
    • 通过使用变量名[‘键’] = ‘值’,如果key不存在,新键值对(key:value;如果存在,则更新值(value)
dic = {}
print(dic)
  # {}
  
  dic['name'] = 'Tom'
  print(dic)
  #{'name': 'Tom'} 不存在则增加
  
  dic['name'] = 'Alice'
  print(dic)
  
  # {'name': 'Alice'} 若存在则更改
  • dict.update(dic)
  • 把字典dic中的键值对(key:value)更新到dict中。
    • 两个字典的键完全不同,则将dic的键值对全部添加至dict中

    • 存在相同的键,则更新dict中对应的值

dic = {'job': 'IT', 'hobby': 'Read'}
dic1 = {'id': 20190101, 'name': 'Tom', 'age': 22}
dic1.update(dic)
print(dic1)
# {'id': 20190101, 'name': 'Tom', 'age': 22, 'job': 'IT', 'hobby': 'Read'}

dic1 = {'id': 20190101, 'name': 'Tom', 'age': 22}
dic2 = {'name':'Jack','hobby':'Read'}
dic1.update(dic2)
print(dic1)
# {'id': 20190101, 'name': 'Jack', 'age': 22, 'hobby': 'Read'}

(2)删

  • dict.pop

    • 格式:dict.pop(key[,default])

      如果key存在于dict中,删除并返回dict[key];如若不存在,给出默认值则返回默认值,未给出默认值报错

      dic1 = {'id': 20190101, 'name': 'Tom', 'age': 22}
      print(dic1.pop('age'))
      # 22
      print(dict1)
      # {'id': 20190101, 'name': 'Tom'}
      
      
      dic1 = {'id': 20190101, 'name': 'Tom', 'age': 22}
      print(dict.pop('job',22))
      #IT
      print(dict)
      #{'id': 20190101, 'name': 'Tom', 'age': 22}
      
  • dict.popitem()

    • 随机删除一对键值对

    • 有返回值,元组

      dic1 = {'id': 20190101, 'name': 'Tom', 'age': 22}
      print(dic1)
      # {'id': 20190101, 'name': 'Tom', 'age': 22}
      print(dic1.popitem())
      # ('age', 22)
      print(dic1)
      # {'id': 20190101, 'name': 'Tom'}
      
  • del

    • del dict 删除字典,没有返回值

    • del dict[]

      dic1 = {'id': 20190101, 'name': 'Tom', 'age': 22}
      print(dic1)
      #{'id': 20190101, 'name': 'Tom', 'age': 22}
      del dic1['id']
      print(dic1)
      #{'name': 'Tom', 'age': 22}
      
  • .clear()

    • 清空字典,返回值{}

(3)改

  • 直接修改
dic1 = {'id': 20190101, 'name': 'Tom', 'age': 22}
print(dic1)
# {'id': 20190101, 'name': 'Tom', 'age': 22}
dic1['id'] = 20190102
print(dic1)
# {'id': 20190102, 'name': 'Tom', 'age': 22}
  • dict.setdefault()

    • 键存在,不改动,返回字典中的值

    • 键不存在,在字典中添加相应的键值对,并返回相应的值

      dic1 = {'id': 20190101, 'name': 'Tom', 'age': 22}
      print(dic1)
      # {'id': 20190101, 'name': 'Tom', 'age': 22}
      print(dic1.setdefault('name','jack'))
      # Tom
      print(dic1)
      # {'id': 20190101, 'name': 'Tom', 'age': 22}
      print(dic1.setdefault('hobby','IT'))
      # IT
      print(dic1)
      # {'id': 20190101, 'name': 'Tom', 'age': 22, 'hobby': 'IT'}
      

(4)查

  • 字典值的访问

    • 直接通过字典的key访问value
    dic1 = {'id': 20190101, 'name': 'Tom', 'age': 22}
    print(dic1)
    print(dic1['id'])
    # 20190101
    
  • dict.get()访问value

    • 语法格式 dict.get(key,default)
    • 不确定字典中是否存在某个键而又想对其进行操作,比如获取值 ---->get方法
    • 当key不存在的时候,不会抛出异常,返回None
    dic1 = {'id': 20190101, 'name': 'Tom', 'age': 22}
    print(dic1)
    print(dic1.get('name'))
    # Tom
    print(dic1.get('hobby','IT'))
    # IT (但dic1并不存在)
    
  • 遍历

    • dict.keys()
    • dict.values()
    • dict.items
    dic1 = {'id': 20190101, 'name': 'Tom', 'age': 22}
    print(dic1.keys(),end = ' ')
    # dict_keys(['id', 'name', 'age']) 
    for key in dic1.keys():
        print(key,end= ' ')
    # id name age 
    
    print( dic1.values(),end= ' ')
    # dict_values([20190101, 'Tom', 22]) 
    for values in dic1.values():
        print(values,end= ' ')
    # 20190101 Tom 22 
    
    for key,value in dic1.items():
        print(key,':',value)
    # id : 20190101
    # name : Tom
    # age : 22
    
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值