Python 學習 第16篇:數據類型(字典和Json)

字典是鍵/值對構成的集合,字典經過大括號來建立,字典的鍵是字符串,而值能夠是任何數據對象。json

字典有兩個重要的特徵:函數

  • 字典是無序的,字典項沒有特定的順序,只能經過鍵來獲取值;
  • 字典是可變的,支持原處修改鍵的值;
  • 字典是做爲散列表來實現的,可增加,搜索很是快速;
  • 和列表同樣,字典存儲的是對象的引用,不是拷貝。

建立字典

建立空的字典:spa

>>> d={}

建立包含兩個項目的字典:指針

>>> d={'name':'vic','age':28}

建立包含嵌套類型的字典:code

>>> d={'student':{'name':'vic','age':28}}

經過dict函數來建立字典:對象

>>> d=dict(name='vic',age=28)
>>> d
{'name': 'vic', 'age': 28}

字典解析

使用字典解析,可使用迭代器來生成字典:blog

>>> d={x:x**2 for x in range(0,5)}
>>> d
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

引用字典的值

經過鍵來引用字典的值內存

>>> d['name']
'vic'
>>> d['age']
28

或者使用dict.get(key, default)來獲取鍵對應的值,其中default參數的做用是:當不存在鍵時,返回default做爲該鍵的值:ci

>>> d.get('name')
'vic'
>>> d.get('nam','jim')
'jim'

字典操做

字典的基本操做有:文檔

  • len(dict):字典項的數量,或者字典鍵的數量
  • dict.keys():全部字典鍵的集合
  • dict.values():全部字典值得集合
  • dict.items():字典項(鍵/值對)的集合
  • list(dict.keys()):把全部字典鍵轉換爲列表
  • list(dict.values()):把全部字典鍵的值轉換爲列表
  • d[key],d.get(key):根據字典的鍵獲取值
  • key in dict:檢查該key是不是字典的鍵

1,添加/修改字典項

若是字典中不存在Key,那麼添加該Key/Value對;若是存在該Key,那麼修改該Key的值。

>>> d=dict(name='vic',age=28)
>>> d['sex']='male'
{'name': 'vic', 'age': 28, 'sex': 'male'}
>>>
>>> d['sex']='man'
{'name': 'vic', 'age': 28, 'sex': 'man'}

2,刪除字典項

dict.pop(key) 用於刪除鍵爲key的字典項

>>> d.pop('sex')
'man'
>>> d
{'name': 'vic', 'age': 28}

或者使用 del dict[key]來刪除鍵爲key的字典項:

>>> del d['sex']

3,合併字典

dict.update(dict2),把字典dict2合併到dict中

>>> d.update({'tel':'120'})
{'name': 'vic', 'age': 28, 'tel': '120'}

4,複製字典

dict.copy()得到字典的一個深拷貝(deep copy)對象,深拷貝就是增長一個指針而且申請一個新的內存,使這個增長的指針指向這個新的內存。

dict2=dict:得到字典的一個淺拷貝(shallow copy)對象,淺拷貝只是增長了一個指針指向已經存在的內存。

例如,深拷貝對象和原對象,指向不一樣的內存空間,修改任意一個字典,不會影響另一個字典:

>>> d=dict(name='vic',age=28)
>>> dc=d.copy()   # deep copy
>>> dc['tel']=120
>>> d
{'name': 'vic', 'age': 28}
>>> dc
{'name': 'vic', 'age': 28, 'tel': 120}

而淺拷貝對象和原對象指向相同的內存空間,修改任意一個字典,另外一個字典也會修改:

>>> d=dict(name='vic',age=28)
>>> sc=d     # shallow copy
>>> sc['tel']=110
>>> sc
{'name': 'vic', 'age': 28, 'tel': 110}
>>> d
{'name': 'vic', 'age': 28, 'tel': 110}

JSON結構

Python中的json對象實際是一個字典結構,用於存儲和交換信息,導入json模塊:

import json

1,把字符串轉換爲json

json的load()方法用於把josn格式的字符串轉換爲json對象,這其實是一個字典結構:

json_string=  '{ "name":"John", "age":30, "city":"New York"}'
# parse string to json
json_obj = json.loads(json_string)

2,把字典轉換爲json字符串

json的dumps()函數用於把字典結構轉換爲json格式的字符串。

x = {
  "name": "John",
  "age": 30,
  "city": "New York"
}
# convert dict into JSON string:
json_string = json.dumps(x)

 

 

參考文檔:

相關文章
相關標籤/搜索