字典中每个元素由一个键值对组成,其中键相当于真实字典中的字,它在整个字典中作为字条是唯一的;值相当于字的解释说明。Python中有字典数据类型,MATLAB在2022年添加了字典数据类型。[大谦MATLAB,dqmatlab点com]
创建字典
使用MATLAB和Python提供的方法可以轻松创建字典。
【MATLAB】
MATLAB中用dictionary函数创建字典。
code.matlab
>> IDs=["No001" "No002" "No003"];
>> Names=["刘丹" "朱晓琳" "马忠"];
>> d=dictionary(IDs,Names)
d =
具有 3 个条目的 dictionary(string ⟼ string):
"No001" ⟼ "刘丹"
"No002" ⟼ "朱晓琳"
"No003" ⟼ "马忠"
【Python】
Python中有字典数据类型。字典的键与值之间用冒号分隔,键值对之间用逗号分隔。整个字典用大括号({})包围。注意,在整个字典中,键必须是唯一的。
下面用{}创建字典:
code.python
>>> dt={} #空字典
>>> dt
{}
>>> dt={'No001':'刘丹', 'No002':'朱晓琳', 'No003':'马忠'}
>>> dt
{'No001': '刘丹', 'No002': '朱晓琳', 'No003': '马忠'}
>>> len(dt) #字典的长度
3
使用dict函数可以创建字典。该函数的参数,可以以key=value的形式连续传入键和值,也可以将其他可迭代对象转换为字典,或者zip函数生成zip对象,然后将zip对象转换为字典。
下面用key=value的形式输入键和值,并生成字典。
code.python
>>> dt=dict(grade=5, clas=2, id='s195201', name='LinXi')
>>> dt
{'grade': 5, 'clas': 2, 'id': 's195201', 'name': 'LinXi'}
下面用dict函数将其他可迭代对象转换为字典,其他可迭代对象包括列表、元组、集合等。
code.python
>>> dt=dict([('grade',5), ('clas',2), ('id','s195201'), ('name', 'LinXi')])
>>> dt=dict((('grade',5), ('clas',2), ('id','s195201'), ('name', 'LinXi')))
>>> dt=dict([['grade',5], ['clas',2], ['id', 's195201'], ['name', 'LinXi']])
>>> dt=dict((['grade',5], ['clas',2], ['id', 's195201'], ['name', 'LinXi']))
>>> dt=dict({('grade',5), ('clas',2), ('id','s195201'), ('name', 'LinXi')})
这几种转换得到的结果均为:
code.python
>>> dt
{'grade': 5, 'clas': 2, 'id': 's195201', 'name': 'LinXi'}
使用zip函数可以利用两个给定的列表得到zip对象,然后用dict函数将该zip对象转换为字典。这适合于分别得到键和值序列,然后组装成字典的情况。
code.python
>>> k=['grade','clas','id','name']
>>> v=[5,2, 's195201','LinXi']
>>> p=zip(k,v)
>>> dt=dict(p)
>>> dt
{'grade': 5, 'clas': 2, ' id': 's195201', 'name': 'LinXi'}
使用fromkeys方法可以创建值为空的字典,例如:
code.python
>>> dt=dict.fromkeys(['grade', 'clas', 'id', 'name'])
>>> dt
{'grade': None, 'clas': None, ' id': None, 'name': None}
获取字典中键值对的个数。
【MATLAB】
code.matlab
>> numEntries(d)
ans =
3
【Python】
code.python
>>> len(dt)
4
获取字典中键和值的数据类型。
【MATLAB】
code.matlab
>> [keyType,valueType]=types(d)
keyType=
"string"
valueType=
"string"
【Python】
code.python
>>> type(next(iter(dt))) #第1个键值对中键的数据类型
<class 'str'>
>>> type(dt[next(iter(dt))]) #第1个键值对中值的数据类型
<class 'int'>