Python中的 字典和字典数据类型

字典


 

1.字典是Python的内建数据类型,我们知道序列是以连续的整数为索引,而字典用关键字作为索引。特别的,关键字必须是不可变类型,常为字符串或者数值。

#如果元组中只包含字符串和数字,它可以作为关键字,如果它直接或间接地包含了可变对象,就不能当做关键字。
#不能用链表做关键字,因为链表可以用索引、切割或者 append() 和 extend() 等方法改变。
(key:value)

同一个dict中键值必须唯一

用{}来创建空字典

dict.keys()返回字典中所有关键字组成的无序列表

dict.values()

dict.items()   items()方法得出来的项都是元组。

>>> englishLetterFreq = {'E': 12.70, 'T': 9.06, 'A': 8.17, 'O': 7.51, 'I': 6.97, 'N': 6.75, 'S': 6.33, 'H': 6.09, 'R': 5.99, 'D': 4.25, 'L': 4.03, 'C': 2.78, 'U': 2.76, 'M': 2.41, 'W': 2.36, 'F': 2.23, 'G': 2.02, 'Y': 1.97, 'P': 1.93, 'B': 1.29, 'V': 0.98, 'K': 0.77, 'J': 0.15, 'X': 0.15, 'Q': 0.10, 'Z': 0.07}
>>> print(englishLetterFreq.keys())
dict_keys(['E', 'T', 'A', 'O', 'I', 'N', 'S', 'H', 'R', 'D', 'L', 'C', 'U', 'M', 'W', 'F', 'G', 'Y', 'P', 'B', 'V', 'K', 'J', 'X', 'Q', 'Z'])
>>> print(englishLetterFreq.values()) 
dict_values([12.7, 9.06, 8.17, 7.51, 6.97, 6.75, 6.33, 6.09, 5.99, 4.25, 4.03, 2.78, 2.76, 2.41, 2.36, 2.23, 2.02, 1.97, 1.93, 1.29, 0.98, 0.77, 0.15, 0.15, 0.1, 0.07])
>>> print(englishLetterFreq.items())  
dict_items([('E', 12.7), ('T', 9.06), ('A', 8.17), ('O', 7.51), ('I', 6.97), ('N', 6.75), ('S', 6.33), ('H', 6.09), ('R', 5.99), ('D', 4.25), ('L', 4.03), ('C', 2.78), ('U', 2.76), ('M', 2.41), ('W', 2.36), ('F', 2.23), ('G', 2.02), ('Y', 1.97), ('P', 1.93), ('B', 1.29), ('V', 0.98), ('K', 0.77), ('J', 0.15), ('X', 0.15), ('Q', 0.1), ('Z', 0.07)])
>>> list(englishLetterFreq.items())  
[('E', 12.7), ('T', 9.06), ('A', 8.17), ('O', 7.51), ('I', 6.97), ('N', 6.75), ('S', 6.33), ('H', 6.09), ('R', 5.99), ('D', 4.25), ('L', 4.03), ('C', 2.78), ('U', 2.76), ('M', 2.41), ('W', 2.36), ('F', 2.23), ('G', 2.02), ('Y', 1.97), ('P', 1.93), ('B', 1.29), ('V', 0.98), ('K', 0.77), ('J', 0.15), ('X', 0.15), ('Q', 0.1), ('Z', 0.07)]
>>>

 

使用 in 关键字(指 Python 语法)可以检查字典中是否存在某个关键字

dict() 构造函数可以直接从 key-value 对中创建字典:

>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
{'sape': 4139, 'jack': 4098, 'guido': 4127}

字典推导式可以从任意的键值表达式中创建字典:

>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}

如果关键字都是简单的字符串,有时通过关键字参数指定 key-value 对更为方便:

>>> dict(sape=4139, guido=4127, jack=4098)
{'sape': 4139, 'jack': 4098, 'guido': 4127}

 


 

和列表一样,变量保存的并不是字典值本身,而是字典的引用,

列表可以包含其他列表,同样,字典也可以包含其他字典


字典中使用len()函数:

  返回字典中的(key:value)对的数量


字典中使用in运算:

  in运算符检查一个键key是否在字典里,而不是一个value


字典中使用for运算符:

  迭代字典里的键key  !!!!!!

 

 


总结一下字典和列表的区别:

1、字典的项没有固定的顺序,而列表中有顺序,即下标

2、字典不能使用+运算符来进行连接。

  如果是添加新的项,那么就添加新的(key:value)对即可:

    foo['a new key'] = 'a string'

3、列表下标是整数索引,从 0 到 len(list)-1; 而字典可以有任何键。

4、在字典上查找比在列表上查找更快。

  in 运算符在字典上使用比在列表中使用快,参考http://invpy.com/listvsdict

 


split()方法

  'a long string with space or not'.split() 返回字符串列表,在空格的地方做分割。

  也可以给split('xxx')方法传递一个可选的参数,告诉他在出现这个参数'xxx'的时候做分割


 

一些强制类型转换 

  float()    转化成浮点数

  int()       转化成整数,去掉小数

  str()       转化成string

posted @ 2020-08-10 17:09  PiaYie  阅读(644)  评论(0编辑  收藏  举报