python - 字典的增删改查等基础使用方式


1. 创建字典的多种方式

a["IPhone"] = "Apple"

b = {"吕布":"口口布", "关羽":"关习习", "刘备":"刘又田"}
c = dict(吕布="口口布", 关羽="关习习", 刘备="刘又田")
d = dict([("吕布", "口口布"), ("关羽", "关习习"), ("刘备", "刘又田")])
e = dict({"吕布":"口口布", "关羽":"关习习", "刘备":"刘又田"})       #dict()括号内其实是b后的参数
f = dict({"吕布":"口口布", "关羽":"关习习"}, 刘备="刘又田")
g = dict(zip(["吕布","关羽","刘备"], ["口口布","关习习","刘又田"]))

>>> b == c == d == e == f == g
True

2. 增 - dict.fromkeys

>>> x = dict.fromkeys("Hello", 100)         #创建所有键的值都相同的方式
>>> x
{'H': 100, 'e': 100, 'l': 100, 'o': 100}
>>> x['H'] = 70                             #可通过此方式修改,如果此处修改的键值对不在字典中,那么会在字典中新增一个键值对
>>> x
{'H': 70, 'e': 100, 'l': 100, 'o': 100}

3. 删 - pop & del & clear

//pop删除
>>> x.pop('o')                      #pop删除指定键值对
100
>>> x
{'H': 70, 'e': 100, 'l': 100}
>>> x.pop('s')                      #当删除到没有的键值对时会报错
Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    x.pop('s')
KeyError: 's'
>>> x.pop('s', "没有")              #添加default参数能让报错变成添加的字符
'没有'
>>> x.popitem()                     #删除最后一个添加的键值对(修改的不算)
('l', 100)
>>> x
{'H': 70, 'e': 100}

//del删除
>>> del x['H']                      #同样删除指定键可以用del的方式
>>> x
{'e': 100}
>>> del x                           #del加字典名称,能删除整个字典
>>> x                               #删除后报错x没有被定义
Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    x
NameError: name 'x' is not defined

//clear清空字典
>>> x = dict.fromkeys("Hello", 100)
>>> x
{'H': 100, 'e': 100, 'l': 100, 'o': 100}
>>> x.clear()
>>> x
{}

4. 改 - update

>>> x = dict.fromkeys("Hello", 100)
>>> x['o'] = 50             #只能修改一个键值对
>>> x
{'H': 100, 'e': 100, 'l': 100, 'o': 50}

//update可修改多个键值对
>>> x = dict.fromkeys("Hello")
>>> x
{'H': None, 'e': None, 'l': None, 'o': None}
>>> x.update({'H':105, 'l':104})
>>> x
{'H': 105, 'e': None, 'l': 104, 'o': None}
>>> x.update(e='70', o='80')
>>> x
{'H': 105, 'e': '70', 'l': 104, 'o': '80'}

5. 查 - get & setdefault

//普通查询方式
>>> x['e']          #使用此方式查询时,如果查询到字典中没有的字符,会报错
'70'

//使用get参数,能在查询字典没有的空值时返回指定的字符
>>> x.get('A', "没有A")
'没有A'

//使用setdefault参数查询字典时,如果遇到字典中没有的,可将查询的字符插入进去
>>> x.setdefault('H', "code")       #当查询字典中有的值时,返回H键的结果,不修改H的值
105
>>> x.setdefault('C', "code")       #当查询字典中没有C的时候,直接将C键插入字典的,并将code作为对应的值
'code'
>>> x
{'H': 105, 'e': '70', 'l': 104, 'o': '80', 'C': 'code'}

//视图对象 (当字典发生变化,视图对象也会跟这变)
>>> A = x.keys()        #创建字典键的视图对象
>>> B = x.values()      #创建字典值的视图对象
>>> C = x.items()       #C中存储了A和B的键值对
>>> A
dict_keys(['H', 'e', 'l', 'o', 'C'])
>>> B
dict_values([105, '70', 104, '80', 'code'])
>>> C
dict_items([('H', 105), ('e', '70'), ('l', 104), ('o', '80'), ('C', 'code')])

>>> x.pop('C')          #当字典中删除了一个键值对,那么对应视图对象中的键值对也就消失了
'code'
>>> x
{'H': 105, 'e': '70', 'l': 104, 'o': '80'}
>>> A
dict_keys(['H', 'e', 'l', 'o'])
>>> B
dict_values([105, '70', 104, '80'])
>>> C
dict_items([('H', 105), ('e', '70'), ('l', 104), ('o', '80')])

//补充,浅拷贝
>>> d = x.copy()
>>> d
{'H': 105, 'e': '70', 'l': 104, 'o': '80'}

6. 字典也是可以转换成列表的

>>> list(x)             #默认输出字典的键
['H', 'e', 'l', 'o']
>>> list(x.keys())      #输出字典的键
['H', 'e', 'l', 'o']
>>> list(x.values())    #输出字典的值
[105, '70', 104, '80']

//迭代器
>>> a = iter(x)
>>> next(a)
'H'
>>> next(a)
'e'
>>> next(a)
'l'
>>> next(a)
'o'

//排序
>>> x
{'H': 101, 'e': 102, 'l': 103, 'o': 104}
>>> list(reversed(x.values()))
[104, 103, 102, 101]

7. 嵌套

>>> x = {"小明": {"语文":70, "数学":80, "英语":90}, "小红":{"语文":80, "数学":60, "英语":70}}
>>> x
{'小明': {'语文': 70, '数学': 80, '英语': 90}, '小红': {'语文': 80, '数学': 60, '英语': 70}}
>>> x["小明"]["数学"]
80

//也可使用下标索引
>>> x = {"小明": [70,80,90], "小红":[80,60,70]}
>>> x
{'小明': [70, 80, 90], '小红': [80, 60, 70]}
>>> x["小明"][1]
80

8. 字典推导式

>>> x = {'H':80, 'l':90, 'e':100, 'o':108}
>>> x
{'H': 80, 'l': 90, 'e': 100, 'o': 108}
>>> a = {i:h for h,i in x.items()}
>>> a
{80: 'H', 90: 'l', 100: 'e', 108: 'o'}
>>> a = {i:h for h,i in x.items() if i >= 100}
>>> a
{100: 'e', 108: 'o'}

//求出编码值
>>> a = {x:ord(x) for x in "Hello"}
>>> a
{'H': 72, 'e': 101, 'l': 108, 'o': 111}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值