# 解: 一个python字典包含不定的key , value (键值对),它以各种方式存储信息,因此有多种遍历的方式,可以遍历字典的所有键值对,也可以仅遍历键或值
2、遍历所有的键值对
# 在for循环 后可以编写2个任意名字的变量,分别对应字典中的键和值
# 字典对象.items() 作用是把字典转成键值对的列表 [('color', 'green'), ('shape', 'Cube')]
# 列表才能进行循环,需要转成列表[],如果直接使用遍历字典--会默认遍历所有的键,系统也会自己转成可循环的列表见3.2中
alien = {
"color": "green",
"shape": "Cube"
}
aa = alien.items()
print(aa)
# 输出结果:dict_items([('color', 'green'), ('shape', 'Cube')])
for co, sha in alien.items():
print(f"nkey的值:{co}")
print(f"value的值:{sha}")
# 输出结果:
# key的值:color
# value的值:green
# key的值:shape
# value的值:Cube
3、遍历字典中所有的键
# 适用在不需要使用字典中的值时,使用keys()很有用
# keys()方法并非只能用于遍历,也可以用于见3.3 使用方式,
# keys()返回的是一个列表,其中包含字典中所有的键
language = {'xiaoming': 'python', 'liyan': 'pythononon'}
bb = language.keys()
print(bb)
# 输出结果:dict_keys(['xiaoming', 'liyan'])
3.1 显式地使用 keys()让代码更加容易理解,但是也可以省略它,见3.2,结果一致
for name in language.keys():
print(f"大家好我叫: {name.title()}")
# 输出结果:
# 大家好我叫: Xiaoming
# 大家好我叫: Liyan
3.2 遍历字典时,会默认遍历所有的键
for name in language:
print(f"大家好我叫: {name.title()}")
print(f"我喜欢的语言是: {language[name].title()}")
# 输出结果:
# 大家好我叫: Xiaoming
# 我喜欢的语言是: Python
# 大家好我叫: Liyan
# 我喜欢的语言是: Pythononon
3.3 判断lisi某同学是否存在在字典中
if "lisi" in language.keys():
print("yhdfh同学在language字典中")
else:
print("yhdfh同学不在language字典中")
# 输出结果:yhdfh同学不在language字典中
4、安装特定顺序遍历字典中所有的键 sorted(列表):对列表进行临时排序name_age = {"liuyan": "20", "zhangshang": "18", "andy": "28"}
for nameage in sorted(name_age.keys()):
print(f"大叫好我叫: {nameage}")
# 输出结果:
# 大叫好我叫: andy
# 大叫好我叫: liuyan
# 大叫好我叫: zhangshang
# 如果只是想知道字典中的值,可以使用values()来返回一个值列表,不包含任何的key
# 遍历字典中所有的值/ key 然后去重,使用set()
languages = {'xiaoming': 'python', 'liyan': 'python', "zhangshan": "java", "wanwu": "c++"}
5.1 遍历字典中所有的值
for language in languages.values():
print(language)
# 输出结果:
# python
# python
# java
# c++
5.2 遍历字典中所有的值然后去重,使用set()去重
for language in set(languages.values()):
print(language)
# 输出结果:
# python
# java
# c++
5.3 使用set()去重,可以灵活使用去重的方法
langu = {
'xiaoming': 'python',
'liyan': 'python',
"zhangshan": "java",
'liyan': 'python',
"zhangshan": "java",
"wanwu": "c++"
}
for name, like in set(langu.items()):
print(name, like)
# 输出结果:
# liyan python
# zhangshan java
# xiaoming python
# wanwu c++
print(f"去重后的字典的key:{set(langu)}" )
# 输出结果:去重后的字典的key:{'xiaoming', 'wanwu', 'zhangshan', 'liyan'}
print(f"去重后的字典的key和value:{set(langu.items())}" )
# 输出结果:去重后的字典的key和value:{('xiaoming', 'python'), ('zhangshan', 'java'), ('wanwu', 'c++'), ('liyan', 'python')}
lists = ["aa", "bb", "aa", "bb", "cc"]
print(f"去重后的list:{set(lists)}")
# 输出结果:去重后的列表:{'aa', 'cc', 'bb'}
listsa = {"aa", "bb", "aa", "bb", "cc"}
print(f"去重后的集合:{set(listsa)}")
# 输出结果:去重后的集合:{'bb', 'aa', 'cc'}
listsB = ("aa", "bb", "aa", "bb", "cc")
print(f"去重后的元组:{set(listsB)}")
# 输出结果:去重后的元组:{'bb', 'aa', 'cc'}
6、集合和字典容易混
# 集合的定义如下,花括号里面没有键值对时,定义的很有可能是集合
# 集合不同于列表和字典,集合不会以特定的顺序存储元素
dictionary = {"aaaa", "bbbb", "ccc"}