应用:dict()函数可以将两元素list组成的元组变为字典
>>> name = (["first","google"],["second","Yahoo"])
>>> website = dict(name)
>>> website
{'first': 'google', 'second': 'Yahoo'}
根据key得到字典中的值
>>> person ={'name2': 'qiwsir', 'name': 'qiwsir', 'language': 'python', 'site': 'qiwsir.github.io'}
>>> for key in person: #for循环遍历key列表
print(person[key]) #根据key获取对应的值
qiwsir
qiwsir
python
qiwsir.github.io
嵌套
>>> a_dict = {1:{"name":"qiwsir"},2:"python","email":"[email protected]"}
>>> a_dict[1]['name']
'qiwsir
获取key
>>> website = {1:"google","second":"baidu",3:"facebook","twitter":4}
>>> website.keys()
dict_keys([1, 'second', 3, 'twitter'])
>>> for key in website.keys(): #循环得到key值
print(key,type(key))
1
second
3
twitter
简化写法:
>>> for key in website:
print(key,type(key))
1
second
3
twitter
获取值:
>>> website.values()
dict_values(['google', 'baidu', 'facebook', 4])
>>> for value in website.values():
print(value)
google
baidu
facebook
4
另一种方法:遍历key,根据key得到value
>>> for key in website:
print(website[key])
google
baidu
facebook
4
获取键值对组成的元组
>>> website.items()
dict_items([(1, 'google'), ('second', 'baidu'), (3, 'facebook'), ('twitter', 4)])
>>> for tuple in website.items():
print(tuple)
(1, 'google')
('second', 'baidu')
(3, 'facebook')
('twitter', 4)
>>> for k,v in website.items(): #特定的形式遍历字典的键值对
print(str(k)+':'+str(v))
1:google
second:baidu
3:facebook
twitter:4
>>> for k in website: #常规方法遍历键值对
print(str(k)+ ":" + str(website[k]))
1:google
second:baidu
3:facebook
twitter:4
>>> len(website) #字典长度
4
删除键值对:
>>> website.pop() #字典是无序的,所有pop函数的参数不能省略
Traceback (most recent call last):
File "
website.pop()
TypeError: pop expected at least 1 arguments, got 0
>>> website.pop(1) #删除指定键的值,得到的是删除的值
'google'
>>> website #删除后字典的最终结果
{'second': 'baidu', 3: 'facebook', 'twitter': 4}
>>> del website[3] # del 直接删除
>>> website
{'second': 'baidu', 'twitter': 4}
>>> d ={'qq': 'first in cn', 'python': 'qiwsir.github.io', 'alibaba': 'Business'}
>>> d2 = {1: 'google', 'second': 'baidu', 3: 'facebook', 'twitter': 4}
>>> d.update(d2)
>>> d
{'qq': 'first in cn', 'python': 'qiwsir.github.io', 'alibaba': 'Business', 1: 'google', 'second': 'baidu', 3: 'facebook', 'twitter': 4}
>>> d2
{1: 'google', 'second': 'baidu', 3: 'facebook', 'twitter': 4}
类似list中的extend
>>> list = [1,2,3,'ee','dd']
>>> list2 = ['f','g']
>>> list.extend(list2)
>>> list
[1, 2, 3, 'ee', 'dd', 'f', 'g']
>>> list2
['f', 'g']
>>> list.append(list2)
>>> list
[1, 2, 3, 'ee', 'dd', 'f', 'g', ['f', 'g']]
助记:字典更新update,列表拓展extend,append当做整体拓展
元组不能修改,需要修改时可用list()方法将其转化为list
str、list与tuple相互转化:
>>> s = 'xxxxx'
>>> l = list(s)
>>> l
['x', 'x', 'x', 'x', 'x']
>>> t = tuple(s)
>>> t
('x', 'x', 'x', 'x', 'x')
>>> l1 = list(t)
>>> l1
['x', 'x', 'x', 'x', 'x']
>>> t1 = tuple(l)
>>> t1
('x', 'x', 'x', 'x', 'x')
>>> l2 = [1,2,'e']
>>> t2 = (3,'sss')
>>> ''.join(l2)
Traceback (most recent call last):
File "
''.join(l2)
TypeError: sequence item 0: expected str instance, int found #l2中含有int型元素,list或tuple转str时不能含有int型元素
>>> l2 = ['3','dd','e']
>>> ''.join(l2)
'3dde'
>>> t2 = ('sss','gg','k')
>>> ''.join(t2)
'sssggk'
set的特点:元素不可重复,无序
把字符串转化为集合
>>> s1 = set("qiwsir")
>>> s1
{'q', 'i', 'r', 'w', 's'} # 1、拆开字符串;2、qiwsir"中有两个"i",自动去重了。
>>> s2 = set([123,"google","face","book","facebook","book"])
>>> s2
{'face', 123, 'facebook', 'book', 'google'} #去重且顺序变了
不能直接创建含有dict或list的集合
>>> s1 = set(['q','i','s','r','w'])
>>> s1[1] = 'I'
Traceback (most recent call last):
File "
s1[1] = 'I'
TypeError: 'set' object does not support item assignment #集合是无序的,不能以编号(偏移量)的方式修改 ;可将其转化为list后再以编号的方式修改。
增加:
>>> a_set.add('[1,2,3]') #集合中不能包含list,可以把list转换为str格式
>>> a_set
{'a', 'i', 'qiwsir', '[1,2,3]'}
合并:s1.update(s2) #把s2合并到s1中,且s2不变,类似dict
>>> s1 =set([1,2,3])
>>> s2 =set([2,3,'d'])
>>> s1.update(s2)
>>> s1 #合并集合并去重了
{1, 2, 3, 'd'}
删除:
>>> s1 = set("qiwsir")
>>> s1
{'q', 'i', 'r', 'w', 's'}
>>> s1.pop() #因集合是无序的,故pop()会从中任选一个元素删除
'q'
>>> s1 = set("qiwsir")
>>> s1
{'q', 'i', 'r', 'w', 's'}
>>> s1.pop('i') #不支持删除指定的元素
Traceback (most recent call last):
File "
s1.pop('i')
TypeError: pop() takes no arguments (1 given) #不应该有参数,但给了一个参数
remove #删除set的指定元素
>>> s1
{'q', 'i', 'r', 'w', 's'}
>>> s1.remove('i')
>>> s1
{'q', 'r', 'w', 's'}
discard 与remove的区别: #discard也是删除集合中的指定元素,删除不在集合中的元素时不会报错,而remove会报错
>>> s1.remove('l')
Traceback (most recent call last):
File "
s1.remove('l')
KeyError: 'l'
>>> s1.discard('q')
>>> s1
{'r', 'w', 's'}
>>> s1.discard('q') #discard也是删除集合中的指定元素,删除不在集合中的元素时不会报错,而remove会报错
>>>
clear #清空集合中所有元素
>>> s1
{'r', 'w', 's'}
>>> s1.clear()
>>> s1
set()
>>> bool(s1)
False