1 字典创建
(1) 直接创建
mydict1={'a':[1,2,3,4],'b':'adsa'}
In [1]:type(mydict1)
Out[1]: dict
(2)通过dict先建立空字典,再添加值
mydict2=dict()
mydict2['one']='sum'
In [9]:mydict2
Out[9]: {'one': 'sum'}
(3) 通过列表创建字典
#方法1:通过zip函数(两个单独列表)
list1=list('abcde')
list2=list(range(6))
list1
Out[32]: ['a', 'b', 'c', 'd', 'e']
list2
Out[33]: [0, 1, 2, 3, 4, 5]
mydict4=dict(zip(list1,list2))
mydict4
Out[35]: {'a': 0, 'b': 1, 'c': 2, 'd': 3, 'e': 4}
#方法2:嵌套列表
arr1=np.arange(0,10).reshape(5,2)
arr1
Out[42]:
array([[0, 1],
[2, 3],
[4, 5],
[6, 7],
[8, 9]])
mydict5=dict(arr1)
mydict5
Out[44]: {0: 1, 2: 3, 4: 5, 6: 7, 8: 9}
#方法3:嵌套列表(使用for循环)
mydict6={}
for i in arr1:
mydict6[i[0]]=i[1]
mydict6
Out[55]: {0: 1, 2: 3, 4: 5, 6: 7, 8: 9}
2 字典索引及常用操作
(1)知道键名称,需要索引值。直接是用键名索引
In [10]:mydict1
Out[10]: {'a': [1, 2, 3, 4], 'b': 'adsa'}
In [11]:mydict1['b']
Out[11]: 'adsa'
(2) 判断字典长度(键值对有多少对)
In [12]:len(mydict1)
Out[12]: 2
(3)判断键是否在字典中(只能判断键,不能判断值)
In [13]:'a' in mydict1
Out[13]: True
In [14]:'c' in mydict1
Out[14]: False
(4) 判断值是否在字典中
In [15]:vals=mydict1.values()
In [16]:'adsa' in vals
Out[16]: True
(5) 通过值查找键
#方法1:通过对值位置的索引,找出键
In [22]:'list(mydict1.keys())[list(mydict1.values()).index('adsa')]
Out[22]: 'b'
#方法2:先反转字典(交换键值关系),再通过索引找出键【当值存在列表等类型时,此方法不可行】
mydict3={v:k for k,v in mydict1.items()}
mydict3['adsa']
3 使用字典进行词频统计
#可以对单词,列表数据进行统计
#字典频率统计
def histcount(sth):
ct=dict()
for item in sth:
if item not in ct:
ct[item]=1
else:
ct[item]+=1
return ct
#使用get简化
def histct2(sth):
ct=dict()
for item in sth:
ct[item]=ct.get(item,0)+1
return ct