1、集合:一个无序、无索引、不重复的集合(集合数据)。用花括号‘{}’来表示,并用逗号来分隔其中的元素。
1.1 遍历
注意:集合是无序的,因此无法确定项目的显示顺序。无索引也就意味着不能通过索引访问集合set中的元素。
可以使用 for 循环遍历集合,或者使用 in 关键字查询集合中是否存在指定值。
1.2 元素
集合一旦创建,就无法更改其中的元素,但是可以添加、删除新元素。
1.2.1 添加元素
add() 方法:要将一个元素添加到集合
update() 方法:要向集合中添加多个元素,且参数可以是列表,元组,字典等
thisset = {"apple", "banana", "cherry"}
#thisset.add("orange")
#输出:{'banana', 'orange', 'apple', 'cherry'}
thisset.update(["orange", "mango", "grapes"])
print(thisset)
输出:{'banana', 'grapes', 'apple', 'cherry', 'mango', 'orange'}
len() 方法同样可以确定集合中有多少元素(集合长度)
1.3.1删除元素
remove() 、 discard() 、pop() 方法
thisset = {"apple", "banana", "cherry"}
thisset.discard("apple") #或者thisset.remove("apple")
print(thisset)
输出:{'cherry', 'banana'}
如果要删除的项目不存在,则 remove() 将引发错误。在python3.0+,discard()方法在元素不存在时,不会发生错误。
thisset = {"apple", "banana", "cherry","ear"}
thisset.pop()
print(thisset)
输出:
{'banana', 'cherry', 'apple'} #第一次运行
{'banana', 'cherry', 'pear'} #第二次运行
{'pear', 'banana', 'apple'} #第三次运行
多次执行测试结果都不一样。pop() 方法会对集合进行无序的排列,然后将这个无序排列集合的左面第一个元素进行删除。(字典和字符串的集合是随机删除元素,其余的是删除左面第一个元素)
set() 函数:创建集合。创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
2、字典:一个无序、可变和有索引的集合,字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中。是一种可变容器模型,且可存储任意类型对象。
dict = {key1 : value1, key2 : value2 }
键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串、数字、元组、字典,用列表不行。
不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住。
dict = {‘Iam’: ‘2341’, ‘You’: ‘SB’, ‘112’: 822, 22: ‘Love’}
2.1、访问字典中的值
依次指定字典名和放在方括号内的键:
dict = {'Iam': '2341', 'You': 'SB', '112': 822, 22: 'Love'}
print (dict[22])
print (dict['112'])
输出:
Love
822
len()方法:确定字典有多少个键值对。
如果用字典里没有的键访问数据,则会输出错误。
2.2、修改字典
dict = {'Iam': '2341',
'You': 'SB',
'112': 822,
22: 'Love'}
dict['Iam'] = 'CC' #修改
dict['school'] = 'SW' #添加新的键并为其赋值
print (dict)
输出:
{'Iam': 'CC', 'You': 'SB', '112': 822, 22: 'Love', 'school': 'SW'}
删除:del 语句能删除单一的元素,也能删除整个字典。整个字典删除后不能再使用。
dict.pop('112') #删除单一键值对
del dict['You'] #删除单一键值对
dict.clear() #清空字典
del dict #删除整个字典
复制:不能通过键入 dict2 = dict1 来复制字典,因为:dict2 只是对 dict1 的引用,而 dict1 中的更改也将自动在 dict2 中进行。而列表、元组、集合可以。使用copy() 方法可复制字典。
dict()函数:创建一个新的字典,dict2 = dict(dict1):创建了与dict1相同的字典dict2
2.3、遍历字典
items() 方法:以列表返回可遍历的(键, 值) 元组数组
keys()方法:返回一个可迭代对象,可以使用 list() 转换为列表,列表为字典中所有键
value()方法:返回一个迭代器,可以使用 list() 来转换为列表,列表为字典中的所有值
dict0 = {'Iam': '2341',
'You': 'SB',
'112': 822,
22: 'Love'}
for key, value in dict0.items():
print (str(key) + ': '+str(value)) #字典中有字符串和数字,为了能一起显示,用了str()
print("\n")
for key in dict0.keys():
print(key)
print("\n")
for value in dict0.values():
print(value)
输出:
Iam: 2341
You: SB
112: 822
22: Love
Iam
You
112
22
2341
SB
822
Love
2.4、嵌套
2.4.1 字典列表
将字典都放到列表中:
a0 = {'color': 'green', 'points': 5}
a1 = {'color': 'yellow', 'points': 10}
a2 = {'color': 'red', 'points': 15}
a3 = [a0, a1, a2]
for a in a3:
print(a)
输出:
{'color': 'green', 'points': 5}
{'color': 'yellow', 'points': 10}
{'color': 'red', 'points': 15}
2.4.2 在字典中存储列表
每当需要在字典中将一个键关联到多个值时,都可以在字典中嵌套一个列表。
favorite_languages = {
'jen': ['python', 'ruby'],
'sarah': ['c'],
'edward': ['ruby', 'go'],
'phil': ['python', 'haskell'],
}
for name, languages in favorite_languages.items():
for language in languages:
类似构建了一个多维的数组,遍历时需要用到嵌套循环。
2.4.3 嵌套字典
可在字典中嵌套字典,但这样做时,代码可能会复杂起来。
myfamily = {
"child1" : {
"last" : "Adbs",
"first": "A",
"year" : 2000
},
"child2" : {
"last" : "Jswet",
"first": "J",
"year" : 1998
},
"child3" : {
"last" : "Rsdhf",
"first": "R",
"year" : 1999
}
}
for num, child_info in myfamily.items():
print ("\nnumber: " + num)
full_name = child_info["first"] + " " + child_info["last"]
years = child_info["year"]
print ("name: " + full_name.title())
print ("year: " + str(years))
输出:
number: child1
name: A Adbs
year: 2000
number: child2
name: J Jswet
year: 1998
number: child3
name: R Rsdhf
year: 1999
如果表示每位孩子的字典的结构都相同,这会使得嵌套的字典处理起来更容易。