字典、集合 、序列

字典、集合 、序列

一、字典

  • 可变类型与不可变类型
    1.序列是以连续的整数为索引,与此不同的是,字典以"关键字"为索引,关键字可以是任意不可变类型,通常用字符串或数值。
    2.字典是 Python 唯一的一个 映射类型,字符串、元组、列表属于序列类型。
    判断一个数据类型 X 是不是可变类型?
    方法一:
    麻烦方法:用 id(X) 函数,对 X 进行某种操作,比较操作前后的 id,如果不一样,则 X 不可变,如果一样,则 X 可变。
    方法二:
    便捷方法:用 hash(X),只要不报错,证明 X 可被哈希,即不可变,反过来不可被哈希,即可变。
i=1
print(id(i))
i=i+1
print(id(i))
li=[1,2,3]
print(id(li))
li.append(4)
print(li,id(li))
#140718338217632
#140718338217664   id改变了,所以整数是不可变类型
#1699756988288
#[1, 2, 3, 4] 1699756988288    id没有改变,所以列表是可变类型
print(hash('python'))#2290148981900890248
print(hash((1,2,3,4)))#590899387183067792
print(hash([4,5,6,7]))#TypeError: unhashable type: 'list'
print(hash({
   4,5,6,7}))#print(hash({4,5,6,7}))

总结:
数值、字符和元组 都能被哈希,因此它们是不可变类型。
列表、集合、字典不能被哈希,因此它是可变类型。

-字典的定义
字典 是无序的 键:值(key:value)对集合,键必须是互不相同的(在同一个字典之内)。
字典 定义语法为 {元素1, 元素2, …, 元素n}

1.其中每一个元素是一个「键值对」-- 键:值 (key:value)
2.关键点是「大括号 {}」,「逗号 ,」和「冒号 :」
3.大括号 – 把所有元素绑在一起
4.逗号 – 将每个键值对分开
5.冒号 – 将键和值分开

number=['1','2','3']
character=['haohao','xiaoxaio','heiehei']
print('2:',character[number.index('2')])
#2: xiaoxaio
dic={
   '1':'haohao','2':'xiaoxaio','3':'heihei'}
print('2:',dic['2'])
#2: xiaoxaio

例:通过字符串或数值作为key来创建字典。

dic1 = {
   1: 'one', 2: 'two', 3: 'three'}
print(dic1)  # {1: 'one', 2: 'two', 3: 'three'}
print(dic1[1])  # one
print(dic1[4])  # KeyError: 4
  • 通过构造函数dict来创建字典。
    1.dict() 创建一个空的字典。
    通过key直接把数据放入字典中,但一个key只能对应一个value,多次对一个key放入 value,后面的值会把前面的值冲掉。
dic=dict()
dic['one']=1
dic['two']=2
dic['three']=3
print(dic)
#{'one': 1, 'two': 2, 'three': 3}

2.通过(key,value)初始化新字典

dic1 = dict([('one', 1), ('two', 2), ('three', 3)])
print(dic1) #{'one': 1, 'two': 2, 'three': 3}
dic2 = dict((('one', 1), ('two', 2), ('three', 3)))
print(dic2) #{'one': 1, 'two': 2, 'three': 3}

3.For example: dict(one=1, two=2)
<注>这种情况下,键只能为字符串类型,并且创建的字符串不能加上引号,加上会报错。

dic=dict(name='haha',grade='2')
print(dic)
#{'name': 'haha', 'grade': '2'}

字典的内置方法

  • dict.fromkeys(seq[, value]) 用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值。
seq=('nianji','banji','zuoweihao')
dic=dict.fromkeys(seq)
print(dic)
#{'nianji': None, 'banji': None, 'zuoweihao': None}
seq=('nianji','banji','zuoweihao')
dic=dict.fromkeys(seq,2)
print(dic)
#{'nianji': 2, 'banji': 2, 'zuoweihao': 2}
{
   <
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

colaj_49485675

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值