字典
概念:一系列键—值对组成,可嵌套,类似结构体
表示方法:花括号{“A”:1,B:“2”}
基础操作: 可以把键简单理解为一种下标
- 访问值:字典 [ 键 ]
- 修改值:字典 [ 键 ] = 值
- 添加键值对:字典 [ 新键 ] = 值
- 删除键值对:del 字典[键] 永久删除
dict = {
'a':"C语言",
'b':"python",
'c':"python",
}
print(dict['a']) #访问键为’a'的值
dict['b'] = "C++" #将键为'b'的值设置为”C++“
dict['d'] = "Java" #新增键值对
del dict['a'] #删除键为'a'的键值对
print(dict)
输出:
C语言
{'b': 'C++', 'c': 'python', 'd': 'Java'}
遍历:
- 所有键:字典.keys() 返回包含所有键的列表
- 所有值:字典.values() 返回包含所有值的列表
- 所有键值对:字典.items() 返回包含所有键值对的列表
dict = { #定义字典
'a':"C语言",
'b':"python",
'c':"python",
}
print(dict.keys()) #返回键集合
print(dict.items()) #返回值集合
for key in dict.keys(): #输出键集合
print(key, end='')
print("")
for value in dict.values(): #输出值集合
print(value, end='')
print("")
for k,v in dict.items(): #一块遍历键值对,k为键,v为值
print("%s喜欢%s" %(k,v))
输出:
dict_keys(['a', 'b', 'c'])
dict_items([('a', 'C语言'), ('b', 'python'), ('c', 'python')])
abc
C语言pythonpython
a喜欢C语言
b喜欢python
c喜欢python
列表去重:set(列表)
dict = { #定义字典
'a':"C语言",
'b':"python",
'c':"python",
}
for value in set(dict.values()): #输出值集合,set集合是独一无二的
print(value)
输出:
python
C语言
嵌套
1. 列表中嵌套字典:字典列表
用法:[ 字典名1,字典名2,……]
应用:网站每个用户是一个字典,将所有用户字典存入user用户列表中,方便遍历统一处理信息
#创建一个存储外星人的空列表
aiens = []
#创建30个外星人字典,存入列表
for aien_number in range(30):
new_aien = {"color":"greeen", "speed":"slow"}
aiens.append(new_aien)
#列表中取出前5个外星人字典,并输出
for aien in aiens[:5]:
print(aien)
#访问元素字典中的值,前一个为列表索引,后面为键
for num in range(5):
print(aiens[num]["color"])
输出:
{'color': 'greeen', 'speed': 'slow'}
{'color': 'greeen', 'speed': 'slow'}
{'color': 'greeen', 'speed': 'slow'}
{'color': 'greeen', 'speed': 'slow'}
{'color': 'greeen', 'speed': 'slow'}
greeen
greeen
greeen
greeen
greeen
2. 字典中嵌套列表:列表字典
用法:{键:值,键:列表,……}
应用:描述3位同学喜欢的编程语言,一个同学可能喜欢好几种,字典的值(编程语言)是列表
fav_lans = {
"小明": ["python"],
"小华": ["C++", "python"],
}
for keys,values in fav_lans.items():
print(keys) #print("%s,%s" %(keys,values))
for value in values: #小明, ['python']
print(value) #小华, ['C++', 'python']
#把问题想象简单点,keys即字符串,values即列表
#建议在列表字典中,所有的值均写作列表的形式
print(fav_lans["小华][0]) #输出:C++
输出:
小明
python
小华
C++
python
3. 列表中嵌套列表:[ [“a”,“b”], [“c”] ]
应用:类似二维数组,索引访问
liebiao = [["1","2"],[3,4,5],6.5,7]
for value in liebiao[1]: #输出第二个列表[3,4,5],用索引访问大列表中元素
print(value, end='')
print()
for num in liebiao: #输出大列表中所有元素
if isinstance(num,list): #判断num是否为列表,是则for循环输出小列表内容,否则直接输出
for value in num:
print(value, end='')
else:
print(num, end='')
输出:
345
123456.57
4. 字典中嵌套字典:{ “a” : { xxx } ,“b” : { xxx } }
缺点:字典嵌套字典,代码很快复杂起来
users = {
"小明":{
"性别":"男",
"爱好":"python"
},
"小红":{
"性别":"女",
"爱好":"C++"
},
}
for user in users.values(): #返回小字典
print(user["爱好"]) #根据键查值
输出:
python
C++