牛逼!Python常用数据类型的基本操作(长文系列第①篇)(四)

字典

字典是Python中一个非常有用的原生数据类型,一般序列是用连续的整数作为索引,而字典是以关键字作为索引,且关键字要是任意不可变类型。理解字典时可以把它看做无序的键:值对(key:value对)集合,同一个字典中键必须互不相同,利用{}可以初始化一个空的字典。

In [77]: dict1 = {}
In [78]: type(dict1)
Out[78]: dict

如果确保一个键不在字典中,可以利用下面的方法向字典中添加元素。

In [81]: dict1 = {'a':1,'b':2}
In [82]: dict1['c'] = 3
In [83]: dict1
Out[83]: {'a': 1, 'b': 2, 'c': 3}

而如果这个键已经存在于字典中了,就表示为这个键赋值。

In [84]: dict1['b']=4
In [85]: dict1
Out[85]: {'a': 1, 'b': 4, 'c': 3}

keys()方法能够一次性获得字典中所有的键,values()方法则用来获取值,items()则是获取键值对的元组形式。

In [86]: list(dict1.keys())
Out[86]: ['a', 'b', 'c']

In [87]: list(dict1.values())
Out[87]: [1, 4, 3]

In [88]: list(dict1.items())
Out[88]: [('a', 1), ('b', 4), ('c', 3)]

元组形式或者列表中嵌套的元组的形式都可以转换成字典,因为要保持不可变性。

In [89]: dict2 = dict([('e',5),('f',6)])
In [90]: dict2
Out[90]: {'e': 5, 'f': 6}

In [91]: dict3  = dict((('g',7),('h',8)))
In [92]: dict3
Out[92]: {'g': 7, 'h': 8}

当然也可以通过'='赋值的形式创建一个字典。

In [93]: dict5 = dict(i = 8,j = 9)
In [94]: dict5
Out[94]: {'i': 8, 'j': 9}

查询一个键是否存在一个列表中。

In [96]: 'i' in dict5
Out[96]: True

In [97]: 'a' in dict5
Out[97]: False

根据键查询对应值的两种方式:

  • 1、直接利用键的名字索引,不足的是如果字典中没有这个键则会发生报错。
  • 2、利用get方法,可以设置不存在键名的情况下的返回值,默认返回None。
In [98]: dict5['i']
Out[98]: 8
In [99]: dict5['a']
KeyError: 'a'

In [101]: dict5.get('i')
Out[101]: 8
In [103]: dict5.get('a',"没有")
Out[103]: '没有'

字典中的几种删除方式:

  • 1、pop()方法,与列表不同的是必须要传入一个字典中已有键的参数。
  • 2、popitem(),类似于列表中的pop(),随机删除一组键值对而非删除最后一个,因为字典本身无序。
  • 3、del方法,用于删除整个字典
In [107]: dict3
Out[107]: {'g': 7, 'h': 8}

In [109]: dict3.pop('g')
Out[109]: 7
In [110]: dict3.popitem()
Out[110]: ('h', 8)

clear()方法可以清楚字典中所有的键值对。

In [104]: dict5.clear()
In [105]: dict5
Out[105]: {}

setdefault()方法可以传入一组键值对,如果字典中已有同名键,则返回键在字典中对应的值,否则将传入的键值对存入字典中。

In [115]: dict2
Out[115]: {'e': 5, 'f': 6}

In [117]: dict2.setdefault('e',1)
Out[117]: 5

In [118]: dict2.setdefault('g',7)
Out[118]: 7
In [119]: dict2
Out[119]: {'e': 5, 'f': 6, 'g': 7}

update()方法可以用来更新字典:

  • 如果字典中已有传入的键,则更新键对应的值。
  • 如果没有,则将传入的键值对存入字典中。
In [121]: dict2.update({'g':10})
In [122]: dict2
Out[122]: {'e': 5, 'f': 6, 'g': 10}

In [123]: dict2.update(dict1)
In [124]: dict2
Out[124]: {'e': 5, 'f': 6, 'g': 10, 'a': 1, 'b': 4, 'c': 3}

总结

上面就是五种数据类型基本操作的一个概括,其中比较常用的三种就是字符串、列表和字典,应该重点掌握,然后有的伙伴一定好奇为什么没写表达式?莫急,在后面文章中一定是会有的。上面的基操都是非常基础的,一定要熟悉,并且注意每个数据类型的特点,不要相互混淆啦。

上一篇:牛逼!Python的判断、循环和各种表达式(长文系列第②篇)(一)


下一篇:安卓手机日历和微软日历同步的方法