跳至主要內容

13-字典「dict/Dannie」

AI悦创原创Python 1v1Python 基础笔记Python 1v1Python 基础笔记大约 3 分钟...约 1043 字

13-字典「dict/Dannie」

1. 请使用之前的知识做出一个简易的电话本

name_lst = ["aiyc", "dannie", "jaden"]
number_lst = ["123", "456", "789"]
username = input("我让你输入一个值,这个值是你要查找的用户名称,你输入的值,将会赋值给 username:")
print("username 的值是:", username)
xiabiao = name_lst.index(username)
print(xiabiao)
number = number_lst[xiabiao]
print(number)
name=["Lyon", "Dannie", "Curtis", "Mason"]
fruit=["Grape", "Watermelon", "Orange", "kiwi"]

key_in=input("Please key in family's name:" )
print(key_in)

location=name.index(key_in)
print(location)

print_out=fruit[location]
print("His/Her favorite fruit is:",print_out)
image-20221101002338557
image-20221101002338557

电话本方法二

phone_lst=["aicy","123","dannie","456","jaden","789"]
i=input()
o=phone_lst.index(i)
print(phone_lst[o+1])

输出:

输入: jaden
输出:789
phone_lst=["aicy","123","dannie","456","jaden","789"]
i=input("Please key in the name: " , )
o=phone_lst.index(i)
print("phone number is: ",  phone_lst[o+1])

输出:

image-20221101213853233
image-20221101213853233

input 有时候要写输入提示哦,不然运行起来有时候自己都会蒙的。

phone_lst=["aicy","123","dannie","456","jaden","789"]
i=input("Please key in the name: " , )
o=phone_lst.index(i)
print("phone number is: ",  phone_lst[o+1])

print(phone_lst[phone_lst.index(input("please key in the name:", ))+1])

输出:

image-20221101214526356
image-20221101214526356

该一行的时候一行,不该一行写完代码的时候,不要那么写。——可读性较低

字典的结构

image-20221101214739233
image-20221101214739233
phone_lst={"aicy":"123","dannie":"456","jaden":"789"}
print(type(phone_lst))
  • key:不可变「不可以使用可变的数据类型,当作字典的 key」list:可以做 key 吗?——不可以,因为,列表可变
  • 数字型可以做 key 吗?——可以,数字不可变
  • 元组「tuple」可以做 key 吗?——可以,元组不可变
  • 字符串「str」可以做 key 吗?——可以,字符串不可变
  • 集合「set」可以做 key 吗?——不可以,集合可变
  • 布尔型「bool」可以做 key 吗?——可以,bool 不可变
  • value:任意数据类型

字典结构—key

image-20221101215552539
image-20221101215552539

用字典 dict 函数创建字典

image-20221101215921522
image-20221101215921522
phone_lst= [(["aiyc"],"123"),(["jaden"],"789")]
phone_lst_new = dict(phone_lst)
print(phone_lst_new)

输出:

image-20221101220844862
image-20221101220844862

输出会有报错, 因为字典里面的元组,第一个不能是列表。

d = [("aiyc", "value"),("Aiyc", "look"), (123, 223)]
print(dict(d))

d=dict( name ="aiyc", age = 19 )
print (d)

第一种写法: key, 可以不一定全部都要求是字符串, 例子里面 123 数值也做了 key

第二种的写法不能够支持全部的类型(可以做字典 key 的类型)

第二种写法, 赋值式的, 但是 key 基本上也被规定了相同的类型,比如 字符串, 后面的 age 也是字符串

字典提取数据

image-20221104212023156
image-20221104212023156

get()

d = {"name": "aiyc", "age": "18"}
# print(d["name1"])
print(d.get("name"))  # 如果 key 存在则返回值,否则默认返回 none
print(d.get("namesssss"))  # 如果 key 存在则返回值,否则默认返回 None
print(d.get("namesssss", "小主,我没有找到哦~"))  # 如果 key 存在则返回值,否则默认返回 None

输出:

aiyc
None
小主,我没有找到哦~
grade = { "lilei":"98", "hanmeimei": "99"}
print(grade)
print(grade.get("dannie"))
print(grade.get("dannie", "it is not exist, try again"))

输出:

image-20221104213709025
image-20221104213709025

更新字典数据「update dict data」

image-20221104213825717
image-20221104213825717

字典的删除「del」

image-20221104214803423
image-20221104214803423

字典嵌套

image-20221104215214028
image-20221104215214028

字典放在列表内

image-20221107213846947
image-20221107213846947
favorite_class={'lilei':['Math', 'English'], 'hanmeimei':['Chinese'], 'madongmei':['Computer','Physic', 'Math']}
class2 = favorite_class ['lilei']
print (class2)
print (class2[1])

class3=favorite_class['madongmei']
print (class3)
print (class3[1])

print (favorite_class ['lilei'][1], favorite_class ['madongmei'][1], sep= ',')
image-20221107214102590
image-20221107214102590

字典嵌套列表

image-20221107213949392
image-20221107213949392
student1= {'name': 'lilei', 'score': '98', 'testing_class': True}
class1 ={
    'lilei':{'score':'98', 'testing_class': True},
    'hanmeimei': {'score':'95', 'testing_class': False}
}

p1=class1['lilei']
print(p1)
print(p1['testing_class'])

p2=class1['hanmeimei']
print(p2)
print(p2['score'])

print(class1['lilei']['testing_class'], class1['hanmeimei']['score'], sep=',')

输出:

image-20221107220337293
image-20221107220337293

容易混淆,总结:

提取列表里面的数值, 是 按照位置提取 , 如 list_1[2] , 就是 列表里面的 2号位的数值

但是 提取字典里面的数值, 是提取 key

image-20221107220623761
image-20221107220623761

提示

最后一句, 如果用 .get() 实现。 可以这样写:

print(class1.get('lilei')['testing_class'], class1.get('hanmeimei')['score'], sep=',')

甚至可以再继续用 .get() , 可以这样写:

print(class1.get('lilei').get('testing_class'), class1.get('hanmeimei').get('score'), sep=',')

得出的输出也是 :

image-20221107221810069
image-20221107221810069
上次编辑于:
贡献者: AndersonHJB,AI悦创
你认为这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
评论
  • 按正序
  • 按倒序
  • 按热度