mysql翻译逗号隔开的字典_Python 基础(字典)

字典是另一种可变容器模型,且可存储任意类型对象。

  • 字典是一种可变数据类型
  • 字典的元素存储方式是键值对的形式,键值对之间用逗号隔开
  • 键值对的形式形如:key:value
  • 最外层用{}括起来
  • d = {key1 : value1, key2 : value2 }
  • 由于字典是键值对的形式,所以字典是无序的,自然不能切片和索引,而是通过键来取值

键:只能是不可变数据类型,一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一

值:可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组

693e795330a2cc5f70a2254ecbb0fe10.png

字典的定义

使用dict()来定义字典

>>> a = dict([('k1',1), ('k2', 2), (('k31', 'k32'), 3), [('k41', 'k42', 'k43', ('k441', 'k442')), 4]])
>>> a
{'k1': 1,
 'k2': 2,
 ('k31', 'k32'): 3,
 ('k41', 'k42', 'k43', ('k441', 'k442')): 4}
>>> type(a)
dict

使用{ }来定义字典

>>> b = {'k1':1, 'k2':2, (1, 2, 3):3}
>>> b
{'k1':1, 'k2':2, (1, 2, 3):3}
>>> type(b)
dict

字典键的特性

字典值可以是任何的python对象,既可以是标准的对象,也可以是用户定义的,但键不行。

两个重要的点需要记住:

1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,如下实例:

>>> dic = {'公众号': '数据STUDIO', 'Name': 'jim_learning', 'Name': 'Jim'}
>>> print("dic['Name']: ", dic['Name'])
dic['Name']:  Jim

2)键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行,如下实例:

>>> dic = {['公众号']: '数据STUDIO', 'Name': 'jim_learning'}
>>> print("dic['公众号']: ", dic['公众号'])

---------------------------------------------------------------------
TypeError                           Traceback (most recent call last)
-33-e29296bcd27a> in 
----> 1 dic = {['公众号']: '数据STUDIO', 'Name': 'jim_learning'}2 print("dic['公众号']: ", dic['公众号'])
TypeError: unhashable type: 'list'

字典的一些运算

in包含运算

判断元素是否是字典的键,如果键在字典dict里返回true,否则返回false

>>> dic = {'关注':'数据STUDIO', '点赞': 520}
>>> '点赞' in dic
True

字典没有加减乘除等运算。

字典对象的一些方法


三个增加方法

方法说明
dict[key] = value如果这个键不存在就是增加,存在就是修改值
dict.setdefault(key, default=None)Python 字典 setdefault() 方法和 get()方法类似, 如果键名存在,则不会有任何变化。如果键不已经存在于字典中,将会添加键并将值设为默认值。
dict.update(dict2)把字典参数 dict2 的 key/value(键/值) 对更新到字典 dict 里。dict2不会发生变化
dict[键名] = 值

增加一个新的键值对'name': 'jim_learning'

>>> dict1 = {'language1':'python', 'language2':'mysql'}
>>> dict1['name'] = 'jim_learning'
>>> dict1
{'language1': 'python', 'language2': 'mysql', 'name': 'jim_learning'}

>>> dict1['name'] = 'Jim'
>>> dict1
{'language1': 'python', 'language2': 'mysql', 'name': 'Jim'}
dict.setdefault('新键名', 值)

增加一个新的键值对'name': 'jim_learning'

>>> dict2 = {'language1':'python', 'language2':'mysql'}
>>> dict2.setdefault('name', 'jim_learning')  # 如果不存在这个键,就增加这个键
>>> dict2
{'language1': 'python', 'language2': 'mysql', 'name': 'jim_learning'}

>>> dict2.setdefault('name', 'Jim')  # 如果原来有这个键,则不会发生改变
>>> dict2
{'language1': 'python', 'language2': 'mysql', 'name': 'jim_learning'}

>>> dict2.setdefault('公众号', )   # 只写键,不写值,默认是None
>>> dict2
{'language1': 'python', 'language2': 'mysql', 'name': 'jim_learning', '公众号': None}
dict1.update(dict2)

把所有dic2中的键值对增加到dic1中。这个功能类似于我们在列表中学的extend()扩展功能

>>> dict1 = {'Name': 'Jim', 'Age': 18}
>>> dict2 = {'Sex': 'female'}
 
>>> dict1.update(dict2) # 该方法没有任何返回值。
>>> dict1
{'Name': 'Jim', 'Age': 18, 'Sex': 'female'}

>>> dict2
{'Sex': 'female'}

五种删除方法

方法说明
del dict[key]删除指定键值
dict.pop(key[,default])删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。否则,返回default值。
dict.popitem()随机返回并删除字典中的最后一对键和值。如果字典已经为空,却调用了此方法,就报出KeyError异常。
dict.clear()删除字典内所有元素,留下一个空字典。(和列表对应操作相同)
Del dict删除整个词典(和列表对应操作相同)
del 字典名['键名'] 删除指定键值对
scores={"Mike":88,"Tom":89,"Mary":95,"Jack":95}
del scores['Mike']
scores
{'Tom': 89, 'Mary': 95, 'Jack': 95} 
字典名.pop('键名') 删除键值对+返回值
>>> scores = {"Mike":88,"Tom":89,"Mary":95,"Jack":95}
>>> scores
{'Mike': 88, 'Tom': 89, 'Mary': 95, 'Jack': 95}
>>> scores.pop('Jack') 
95

>>> scores.pop()  #没有指定会报错
>>> scores
{'Mike': 88, 'Tom': 89, 'Mary': 95}
字典名.popitem() 随机删除一对键值对,并返回该键值对,一般是最后一对
>>> scores={"Mike":88,"Tom":89,"Mary":95,"Jack":95}
>>> scores.popitem()
('Jack', 95)
>>> scores
{'Mike': 88, 'Tom': 89, 'Mary': 95}

如果列表为空,则会报错

dict1 = {}
dict1.popitem()
------------------------------------------------------------
KeyError                   Traceback (most recent call last)
-38-90ebb4ec6b65> in 
----> 1 l.popitem()
KeyError: 'popitem(): dictionary is empty'
字典名.clear() 清空字典
>>> scores = {"Mike":88,"Tom":89,"Mary":95,"Jack":95}
>>> scores
{'Mike': 88, 'Tom': 89, 'Mary': 95, 'Jack': 95}
>>> scores.clear()  #所有键值对都被清楚
>>> scores
{}
del 字典名 删除这个字典
>>> scores = {"Mike":88,"Tom":89,"Mary":95,"Jack":95}
>>> scores
{'Mike': 88, 'Tom': 89, 'Mary': 95, 'Jack': 95}
>>> del scores

>>> scores       # 注意和clear()方法的区别
--------------------------------------------------------
NameError               Traceback (most recent call last)
-45-8359f9776778> in 
----> 1 scores       # 注意和clear()方法的区别
NameError: name 'scores' is not defined

一种修改方法

方法说明
dict[key] = value如果键名不存在就是增加,存在就是修改
>>> scores = {"Mike":88,"Tom":89,"Mary":95,"Jack":95}
>>> scores
{'Mike': 88, 'Tom': 89, 'Mary': 95, 'Jack': 95}

# 把'Mike': 88 这个键值对的值改成100
>>> scores['Mike'] = 100  # 若此键存在修改,不存在就增加
>>> scores
{'Mike': 100, 'Tom': 89, 'Mary': 95, 'Jack': 95}

五种查找方法

方法说明
dict[key]返回该键对应的值,没有该键则报错
dict.get(key)返回该键对应的值,没有该键不会报错
dict.keys()返回包含所有键的列表,这个列表不是严格意义上的list,可以用list()转换成严格意义上的列表
dict.values()返回包含所有值的列表,这个列表不是严格意义上的list,可以用list()转换成严格意义上的列表
Dict.items()返回包含所有键值对的列表,每个键值对用元组存储,这个列表不是严格意义上的list,可以用list()转换成严格意义上的列表
dict[key]

取出该键所对应的值

>>> scores={"Mike":88,"Tom":89,"Mary":95,"Jack":95}
>>> scores
{'Mike': 88, 'Tom': 89, 'Mary': 95, 'Jack': 95}
>>> scores["Tom"]
89
dict.get(键)

取出该键所对应的值

>>> scores={"Mike":88,"Tom":89,"Mary":95,"Jack":95}
>>> scores
{'Mike': 88, 'Tom': 89, 'Mary': 95, 'Jack': 95}
dict.keys()

返回包含所有键的列表,这个列表不是严格意义上的list,可以用list()转换成严格意义上的列表

>>> scores={"Mike":88,"Tom":89,"Mary":95,"Jack":95}
>>> scores
{"Mike":88,"Tom":89,"Mary":95,"Jack":95}
>>> type(dic)
dict

>>> scores.keys()
dict_keys(['Mike', 'Tom', 'Mary', 'Jack'])
>>> list(scores.keys())
['Mike', 'Tom', 'Mary', 'Jack']
dict.values()

返回包含所有值的列表,这个列表不是严格意义上的list,可以用list()转换成严格意义上的列表

>>> scores={"Mike":88,"Tom":89,"Mary":95,"Jack":95}
>>> scores
{"Mike":88,"Tom":89,"Mary":95,"Jack":95}
>>> type(dic)
dict

>>> scores.values()
dict_values([88, 89, 95, 95])
>>> list(scores.values())
[88, 89, 95, 95]
dict.items()

返回包含所有键值对的列表,每个键值对用元组储存,这个列表不是严格意义上的list,可以用list()转换成严格意义上的列表

>>> scores={"Mike":88,"Tom":89,"Mary":95,"Jack":95}
>>> scores
{"Mike":88,"Tom":89,"Mary":95,"Jack":95}
>>> type(dic)
dict

>>> scores.items()
dict_items([('Mike', 88), ('Tom', 89), ('Mary', 95), ('Jack', 95)])
>>> list(scores.items())
[('Mike', 88), ('Tom', 89), ('Mary', 95), ('Jack', 95)]

>>> dict(scores.items())
{'Mike': 88, 'Tom': 89, 'Mary': 95, 'Jack': 95}
字典的一些其他操作
>>> dic = {'k':'23','b':'55','a':'48'}
>>> sorted(dic.items(),key=lambda x :x[1])
[('k', '23'), ('a', '48'), ('b', '55')]
>>> print((i %2 for i in range(10)))
 at 0x10df21550>>>> [i %2 for i in range(10)]
[0, 1, 0, 1, 0, 1, 0, 1, 0, 1]

推荐阅读

03390a5696bb8b42dc96b9bd2a7db9d3.png

1d21c9965305425ba2990fd37e69ec12.png

d0da424eeb2ee5f8f8e82b4778a1e1a7.png

-- 数据STUDIO -- 

a568ca79793afe1763db4ccdb5f0f5bb.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值