目录
用大括号{}将一系列以逗号隔开的键值对(key:value)包裹起来即可以进行字典的创建。最简单的字典是空字典,不包括任何的键值对。
- emptyDict = {}
- info = {'name':'班长','id':100,'sex':'f','address':'地球亚洲中国北京'}
向字典添加元素非常简单,只需要指定该元素的键并赋予相应的值即可。
如果该元素的键已经存在于字典中,那么该键对应的旧值会被新值取代。
如果该元素的键并未在字典中出现,则会被加入到字典。与列表不同,你不需要担心赋值过程中Python会抛出越界异常。
- >> info = {'name': '班长', 'id': 100, 'sex': 'f', 'address': '地球亚洲中国北京'}
- >>> info['name']
- '班长'
- >>> info['name'] = '小明'
- >>> print(info)
- {'name': '小明', 'id': 100, 'sex': 'f', 'address': '地球亚洲中国北京'}
- >>> info['age'] = 18
- >>> print(info)
- {'name': '小明', 'id': 100, 'sex': 'f', 'address': '地球亚洲中国北京', 'age': 18}
update()可以将一个字典的键值对赋值到另一个字典中。
如果待添加的字典于待扩充的字典包含同样的键值的话,新归入的字典的值会覆盖原有的值。
- >>> dict1 = {'name': 'boby', 'age': 18}
- >>> dict2 = {'sex': 'men', 'like': 'python'}
- >>> dict3 = {'address': 'china', 'name': 'baby'}
- >>> dict1.update(dict2)
- >>> print(dict1)
- {'name': 'boby', 'age': 18, 'sex': 'men', 'like': 'python'}
- >>> dict1.update(dict3)
- >>> print(dict1)
- {'name': 'baby', 'age': 18, 'sex': 'men', 'like': 'python', 'address': 'china'}
- >>> dict1 = {'name': 'boby', 'age': 18}
- >>> del dict1['age']
- >>> print(dict1)
- {'name': 'boby'}
使用clear(),或者给字典重新赋值一个空字典{},可以将字典中所有元素删除。
- >>> dict1 = {'name': 'boby', 'age': 18}
- >>> dict1.clear()
- >>> print(dict1)
- {}
- >>> dict1 = {'name': 'boby', 'age': 18}
- >>> dict1 = {}
- >>> print(dict1)
- {}
如果你希望判断某一个键是否存在于一个字典中,可以使用in
- >>> dict1 = {'name': 'boby', 'age': 18}
- >>> 'name' in dict1
- True
- >>> 'sex' in dict1
- False
这是对字典最常用进行的操作,只需要指定字典名和键即可获得对应的值。
如果字典中不包含指定的键,会抛出一个异常。
- >>> dict1 = {'name': 'boby', 'age': 18}
- >>> dict1['name']
- 'boby'
- >>> dict1['sex']
- Traceback (most recent call last):
- File "<input>", line 1, in <module>
- KeyError: 'sex'
有两种方法可以避免这种情况的发生。
第一种是在访问前通过in测试键是否存在;
- >>> dict1 = {'name': 'boby', 'age': 18}
- >>> if key in dict1:
- ... print(dict[key])
- ... else:
- ... print('键值不存在')
- ...
- 键值不存在
第二种使用字典函数get()。需要指定字典名,键值和一个可选值。
如果键存在,则会得到对应的值,如果不存在,将会返回可选值,如果没有指定可选值,会得到None。
- >>> dict1 = {'name': 'boby', 'age': 18}
- >>> dict1.get('name')
- 'boby'
- >>> dict1.get('sex', '键值不存在')
- '键值不存在'
- >>> dict1.get('sex')
- None
使用keys()可以获得字典中所有的键。在Python2中,keys()会返回一个列表,而在Python3中返回dict_keys类型。
使用values()可以获取字典中所有值。返回dict_values类型
使用items()函数可以获取字典中所有的键值对。返回dict_items类型
- >>> dict1 = {'name': 'boby', 'age': 18}
- >>> dict1.keys()
- dict_keys(['name', 'age'])
- >>> dict1.values()
- dict_values(['boby', 18])
- >>> dict1.items()
- dict_items([('name', 'boby'), ('age', 18)])
它的键是迭代器形式。如果我们需要一个完整的列表,在Python中,我们可以手动调用list()将dict_keys转换为列表类型。
- >>> dict1 = {'name': 'boby', 'age': 18}
- >>> [key for key in dict1.keys()]
- ['name', 'age']
- >>> [value for value in dict1.values()]
- >>> ['boby', 18]
- >>> [items for items in dict1.items()]
- [('name', 'boby'), ('age', 18)]
- # 遍历字典中的key
- for key in students.keys():
- print(key, end=" ")
-
- # 遍历字典中的values
- for value in students.values():
- print(value, end=" ")
-
- # 遍历字典中的key-value
- for key, value in students.items():
- print("%s:%s" % (key, value), end=" ")
- my_list = [1, 2, 3, 4]
- my_tuple = tuple(my_list)
- print("列表转元组:", my_tuple)
- my_list = [["name", "John"], ["age", 18], ["sex", "男"]]
- my_dict = dict(my_list)
- print("列表嵌套转字典:", my_dict)
- print("--------------")
- # 字典->列表 元组
- my_dict = {'sex': '男', 'age': 18, 'name': 'John'}
- my_list = list(my_dict.keys())
- print("字典keys转列表:", my_list)
- my_list = list(my_dict.values())
- print("字典values转列表:", my_list)
- my_list = list(my_dict.items())
- print("字典items转列表:", my_list)
- print("--------------")
- my_tuple = tuple(my_dict.keys())
- print("字典keys转元组:", my_list)
- my_list = tuple(my_dict.values())
- print("字典values转元组:", my_list)
- my_list = tuple(my_dict.items())
- print("字典items转元组:", my_list)
- """
- 打印结果
-
- 列表转元组: (1, 2, 3, 4)
- 列表嵌套转字典: {'name': 'John', 'age': 18, 'sex': '男'}
- --------------
- 字典keys转列表: ['sex', 'age', 'name']
- 字典values转列表: ['男', 18, 'John']
- 字典items转列表: [('sex', '男'), ('age', 18), ('name', 'John')]
- --------------
- 字典keys转元组: [('sex', '男'), ('age', 18), ('name', 'John')]
- 字典values转元组: ('男', 18, 'John')
- 字典items转元组: (('sex', '男'), ('age', 18), ('name', 'John'))
- """
set集合是一个无序不重复元素集。由于set是一个无序集合,set并不记录元素位置,所以不支持下标操作和切片操作。
创建set集合,我们可以使用set函数来创建:
- # 1. 创建一个空的set集合
- my_set = set()
-
- # 2. 创建一个数字元素集合,
- # 注意:set会剔除重复元素
- my_set = set([1, 2, 3, 4, 5, 5])
- print(my_set)
-
- # 3. 创建一个唯一元素的字符集合
- my_set = set("hello world!")
- print(my_set)
向set集合中添加元素,可以使用add()函数和update()函数,add()可以一次添加一个元素,update()函数可以一次添加多个元素.
- # 创建一个空的集合
- my_set = set()
-
- # add()函数向set中添加元素
- my_set.add(10)
- my_set.add(20)
- my_set.add(30)
-
- # 打印set集合
- print(my_set)
-
- # update()函数添加多个元素
- my_set.update([60, 40, 80, 90])
- my_set.update((160, 140, 180, 190))
- my_set.update("hello")
-
- # 如果添加的元素是一个字典,那么将字典的key添加到集合中
- # my_set.update({"name": "smith", "age": 1030})
- print(my_set)
删除set集合中的元素可以使用pop()、remove()函数、discard()函数 pop()函数会删除set集合中的任意一个元素,如果set集合为空,会抛出KeyError错误。
remove(element)函数从集合中删除一个元素,如果元素不存在,会抛出KeyError错误。
discard(val)函数删除集合中的一个元素,如果不存在,则不做任何事.
- my_set = set([9, 2, 3, 4, 7])
-
- # 删除任意一个元素
- my_set.pop()
- print(my_set)
-
- # 删除指定元素
- my_set.remove(4)
- print(my_set)
-
- # 删除元素
- my_set.discard(3)
- print(my_set)
- # 创建一个集合
- my_set = set([1, 2, 3, 4])
-
- # 遍历set集合
- for value in my_set:
- print(value, end="|")
- my_set1 = set([1, 2, 3, 4, 5])
- my_set2 = set([3, 4, 5, 6, 7])
-
- # 1. 求两个集合的并集
- new_set1 = my_set1.union(my_set2)
- # 或者
- new_set2 = my_set1 | my_set2
- print(new_set1)
- print(new_set2)
-
- # 2. 求两个集合的交集
- new_set3 = my_set1.intersection(my_set2)
- # 或者
- new_set4 = my_set1 & my_set2
- print(new_set3)
- print(new_set4)
- # 统计字符串中字符的个数
- my_string = input("请输入任意字符串:")
-
- # 先对字符串去重
- new_string = set(my_string)
-
- # 字典记录字符出现次数
- my_count = {}
-
- # 遍历new_string
- for ch in new_string:
- my_count[ch] = my_string.count(ch)
-
- # 输出结果
- print(my_count)