Python 高級變量之字典和字符串詳解

1、字典的定義

dictionary(字典)是出列表以外 Python 之中 最靈活 的數據類型,字典統一可以用來 存儲多個數據,通常用於存儲 描述一個 物體 的相關信息;

字典和列表的區別:

  • 列表 是 有序 的對象集合;
  • 字典 是 無需 的對象集合;
  • 字典用 { } 定義

字典使用 鍵值對 存儲數據,鍵值對之間使用 , 分割;

鍵:Key ,是索引;

值: Value, 是數據;

鍵 和 值 之間使用 ; 分割

鍵必須是唯一的;

值 可以取任何數據類型,但 鍵 隻能使用 字符串、數字 或元組;

# 字典是一個無序的數據集合,使用print函數輸出字典時,通常
# 輸出的順序和定義的順序是不一致的!
xiaoming = {"name":"小明",
            "age":18,
            "gender":True,
            "height":1.75,
            "weight":75.5}
print(xiaoming)

字典的基本使用

xiaom_dict = {"name":"小明"}
# 取值
#在取值的時候,如果指定的Key不存在,程序會報錯!
print(xiaom_dict["name"])
# 增加/刪除
# 如果 key 不存在,會新增鍵值對
xiaom_dict["age"] = 18
# 如果 key 存在,會修改意見存在的鍵值對
xiaom_dict["name"] = "小小明"
# 刪除
# 在刪除指定鍵值得時候,如果指定的key不存在,程序會報錯
xiaom_dict.pop("name")
print(xiaom_dict)
xioaming_dict = {"name":"小明",
                 "age":18}
# 統計鍵值對數量
print(len(xioaming_dict))
# 合並字典
temp_dict = {"height":1.75,
             "age":20}
# 註意 如果被合並的字典中包含已經存在的鍵值對,會覆蓋原有的鍵值對
xioaming_dict.update(temp_dict)
# 清空字典
xioaming_dict.clear()
print(xioaming_dict)

2、循環遍歷

遍歷 就是 依次 從 字典 中獲取所有鍵值對;

xiaoming_dict = {"name":"小明",
                 "qq":"123456",
                 "phone":"10086"}
# 迭代遍歷字典
# 變量K是每一次循環中,獲取到的鍵值對的Key
for K in xiaoming_dict:
   print("%s - %s " % (K,xiaoming_dict[K]))

提示:在實際開發中,由於字典中每一個鍵值對保存數據的類型是不同的,所以針對字典的循環遍歷需求並不是很多。

# 使用 多個鍵值對,存儲 描述一個 物體 的相關新 描述更復雜的數據信息
# 將 多個字典 放在一個列表中,再進行遍歷
card_list = [
    {"name":"張三",
     "qq":"123456",
     "phone":"110"},
    {"name":"李四",
     "qq":"10086"},
]
for card_info in card_list:
   print(card_info)

3、字符串的定義

字符串 就是 一串字符,是編程語言中表示文本的數據類型:

雖然可以使用” 或者 ‘ 做字符串的轉義,但是在實際開發中:

如果字符串內部需要使用 ‘ ,可以使用 ” 定義字符串

可以使用 索引 獲取一個字符串中 指定位置的字符,索引計數從0開始;

也可以使用 for 循環遍歷 字符串中加一個字符。

大多數編程語言都是使用” 來定義字符串。

4、字符串的常用操作

在ipython3 中定義一個 字符串,例如:hello_str = “”

輸入 hello_str. 按下 TAB 鍵,ipython 會提示 字符串 能夠使用的方法如下:

hello_str = "hello hello"
# 統計字符串長度
print(len(hello_str))
# 統計某一個小字符串出現的次數
print(hello_str.count("llo"))
print(hello_str.count('abc'))
# 某一個字符串出現的位置
print(hello_str.index("llo"))
#  註意:如果使用index 方法傳遞的字符串不存在 程序會報錯!
#print(hello_str.index("abc"))

字符串 查找和替換

hello_str = "hello world"
# 判斷是否以指定字符串開始
print(hello_str.startswith("hello"))
# 判斷是否以指定字符串結束
print(hello_str.endswith("world"))
# 查找指定字符串
# index 同樣可以查找指定的字符串在大字符串中的索引
print(hello_str.find("llo"))
#index如果指定的字符串不存在,會報錯
# find如果指定的字符串不存在,會返回-1
print(hello_str.find("abc"))
# 替換字符串
# replace 方法執行完成之後,會返回一個新的字符串
# 註意:不會修改原有字符串的內容
print(hello_str.replace("world","python"))
print(hello_str)

字符串 文本對齊演練

# 假設:以下內容是從網絡上抓取得
# 要求:順序並且居中對齊輸出以下內容
poem = ["登喜鵲樓",
        "王之渙",
        "白日依山盡",
        "黃河入海流",
        "欲窮千裡目",
        "更上一層樓"]
for poem_str in poem:
   print("|%s|" % poem_str.center(10," "))

去除空白字符

# 假設:以下內容是從網絡上抓取得
# 要求:順序並且居中對齊輸出以下內容
poem = ["\t\n登喜鵲樓",
        "王之渙",
        "白日依山盡\t\n",
        "黃河入海流",
        "欲窮千裡目",
        "更上一層樓"]
for poem_str in poem:
   # 先使用strip 方法去除字符串中的空白字符
    # 再使用center 方法居中顯示文本
    print("|%s|" % poem_str.strip().center(10," "))

字符串拆分和連接

# 假設:以下內容是從網絡上抓取得
# 要求:將字符串中的空白字符全部去掉
#      再使用“ ” 作為分割符,拼接成一個整齊的字符串
poem_str = ["登喜鵲樓\t",
        "王之渙\t",
        "白日依山盡\t\n",
        "黃河入海流\t\t",
        "欲窮千裡目\t\t",
        "更上一層樓"]
print(poem_str)
# 拆分字符串
poem_list = poem_str.split()
print(poem_list)
# 合並字符串
result = " ".join(poem_list)
print(result)

5、字符串的切片

切片 使用 索引值 來限定范圍,從一個大的 字符串 中 切出 小的 字符串;

列表 和 元組 都是 有序 的集合,都能夠 通過索引值 獲取到對應的數據;

字典 是一個 無序 的集合,是使用 鍵值對 保存數據;

總結

本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: