当前位置: 首页>編程日記>正文

字典表dict

字典表dict

字典表dict

字典是一系列键-值对。每个键都与一个值相关联,通过键来访问与之相关联的值。当我们指定键时,返回的是与之相关联对应的值。与键相对应的值可以是数字、字符串、列表乃至字典。事实上,可以将任何python对象用作字典中的值。

字典表常见操作:

#字典表的声明
d={'ISBN':'234325','title':'python入门','price':39.00}
#通过某一个键访问对应的值
d['title']
'python入门'
d['price']
39.0
#字典表的赋值——为字典表添加键值对
d['author']='jerry'
d
{'ISBN': '23432', 'title': 'python入门', 'price': 39.0, 'author': 'jerry'}
#注意大小写
d['Author']
Traceback (most recent call last):File "<input>", line 1, in <module>
KeyError: 'Author'
#如果用['']方法查询了一个不存在的键系统会报错
d['pubdate']
Traceback (most recent call last):File "<input>", line 1, in <module>
KeyError: 'pubdate'
#用.get('key')方法去访问value 
d.get('price')
39.0
#用.get('key')方法如果输入了一个不存在或输错了的key系统不会报异常只会返回一个空
d.get('pubdate')#用.get('key')方法去检索时,如果不存在,给我返回一个默认值
d.get('pubdate','none')
'none'
#通过dict()函数声明字典表
emp=dict(name='mike',age=20,job='dev')
emp
{'name': 'mike', 'age': 20, 'job': 'dev'}
#用len()函数计算字典表的长度
len(emp)
3
#字典表与列表一样均支持原位改变
emp['name']='jack'
emp
{'name': 'jack', 'age': 20, 'job': 'dev'}
#字典表的合并
dep={'department':'技术部'}
emp.update(dep)
emp
{'name': 'jack', 'age': 20, 'job': 'dev', 'department': '技术部'}
#用.pop()方法弹出并删除某一个值 它会先返回对应的value 但是再看字典表时里面就已经没有了这一对键值了
emp.pop('age')
20
emp
{'name': 'jack', 'job': 'dev', 'department': '技术部'}
#用del()删除键值对
student={'name':'kim','age':20,'gpa':4.0}
student
{'name': 'kim', 'age': 20, 'gpa': 4.0}
del student['age']
student
{'name': 'kim', 'gpa': 4.0}#如果我仅仅是想看字典表有哪些键或者哪些值 并不需要键值成对出现 可以用.keys()和.values()方法 此时返回的不是列表而是视图
emp.keys()
dict_keys(['name', 'job', 'department'])
emp.values()
dict_values(['jack', 'dev', '技术部'])
#但我们依然可以像列表一样去遍历它
for y in emp.values():print(y)jack
dev
技术部
for z in emp.keys():print(z)name
job
department
#for in:print()写在一行也没问题
for k in emp.keys():print(k)
name
job
department
#用.items()方法把键值对一并显示出来 也就是说.items()包含键和值 而刚才的.keys()只包含键 .values()只包含值
emp.items()
dict_items([('name', 'jack'), ('job', 'dev'), ('department', '技术部')])
#我们可以打印的时候格式化字符串把键值对换一种方法显示出来
for k,v in emp.items():print('{}->{}'.format(k,v))name->jack
job->dev
department->技术部
#字典表的嵌套
emp={'age':20,'name':{'firstname':'mike','lastname':'jordan'},'job':'dev'}
emp
{'age': 20, 'name': {'firstname': 'mike', 'lastname': 'jordan'}, 'job': 'dev'}#这个name由两部分组成 firstname和lastname 此时字典表里的'name'对应的也是一个字典表#输入键'name' 返回其所对应的字典表
emp['name']
{'firstname': 'mike', 'lastname': 'jordan'}
#再加一个['']检索里面嵌套的字典表
emp['name']['lastname']
'jordan'
#不可以直接输入嵌套的字典表的键
emp['firstname']
Traceback (most recent call last):File "<input>", line 1, in <module>
KeyError: 'firstname'
emp['name']['firstname']
'mike'#将字典嵌套在列表中——经常需要在列表中储存大量的字典,而其中的每个字典都包含特定对象的众多信息。例如,我们需要为网站的每一个用户都创建一个字典,并将这些字典存储在一个名为users的列表当中
#首先创建三个字典表,每个字典表表示一名用户,然后把这些字典都放入一个名为users的列表当中
user1={'name':'mike','age':20,'gender':'male'}
user2={'name':'maggie','age':21,'gender':'female'}
user3={'name':'khloe','age':18,'gender':'female'}
users=[user1,user2,user3]
#然后我们可以遍历这个列表,将每一个用户的信息打印出来
for user in users:print(user){'name': 'mike', 'age': 20, 'gender': 'male'}
{'name': 'maggie', 'age': 21, 'gender': 'female'}
{'name': 'khloe', 'age': 18, 'gender': 'female'}#在字典当中嵌套列表——每当需要在字典中将一个键关联到多个值时,都可以在字典中嵌套一个列表
pizza = {'crust': 'thick', 'toppings': ['mushroom', 'extra cheese']}
#首先创建一个字典,里面存储了顾客所点的pizza的信息。在这个字典表中,第一个键是crust,对应的值是字符串'thick'。下一个键是toppings,对应的值是一个列表,这个列表中存储了顾客要求添加的所有配料
print("you ordered a " + pizza['crust'] + "-pizza" + " with the following toppings: ")
#为了打印出列表中的信息 首先使用字典表[key]访问对应的列表 然后使用for循环遍历这个列表
for t in pizza['toppings']:print(t)you ordered a thick-pizza with the following toppings: 
mushroom
extra cheeseProcess finished with exit code 0poll = {'jenny': ['egg', 'milk', 'fish'], 'mike': ['salmon', 'cake'], 'james': ['bread', 'beef'],'ben': ['hamburger', 'chips'], 'kylie': ['apple'], 'kim': ['pizza']}
#在上述字典表中,每个键对应的值都是一个列表 在遍历字典表里的键值对时,我们使用变量food来依次存储每一个值,即每一个列表。      
for name, food in poll.items():if len(food) == 1:print(name + " 's fav food is: ")else:print(name + " 's fav food are: ")
#在遍历字典键值对的主循环中,加入了一个for循环遍历每一个列表    for items in food:print(items)jenny 's fav food are: 
egg
milk
fish
mike 's fav food are: 
salmon
cake
james 's fav food are: 
bread
beef
ben 's fav food are: 
hamburger
chips
kylie 's fav food is: 
apple
kim 's fav food is: 
pizzaProcess finished with exit code 0#字典中嵌套字典
#首先定义一个字典,其中包含两个键:用户名aeinstein和mcurie。与每个键相对应的都是一个字典,其中包含用户的名、姓和居住地
users = {'aeinstein': {'first': 'albert', 'last': 'einstein', 'location': 'princeton'},'mcurie': {'first': 'marie', 'last': 'curie', 'location': 'paris'}}
#遍历users字典里的所有键值对,让python依次将每个键存储在变量username中,依次将当前键相对应的字典存储在变量userinfo中        
for username, userinfo in users.items():print('username: ' + username)
#使用 字典名['key'] 访问内部的字典里的对应值   fullname = userinfo['first'] + ' ' + userinfo['last']location = userinfo['location']print('\tfull name: ' + fullname)print('\tlocation: ' + location)username: aeinsteinfull name: albert einsteinlocation: princeton
username: mcuriefull name: marie curielocation: parisProcess finished with exit code 0#字典表不支持直接排序 但可以通过另一种方法让他以特定顺序展示出来
d={'d':4,'c':3,'b':2,'a':1}
#如果我想让它以abcd的顺序打印 可以先把它的keys取出来 转换成列表 然后用列表下的.sort()方法排序 
keys=d.keys()
keys
dict_keys(['d', 'c', 'b', 'a'])
l=list(keys)
l
['d', 'c', 'b', 'a']
l.sort()
l
['a', 'b', 'c', 'd']
for x in l:print(d.get(x))1
2
3
4#可以用全局函数sorted()
d={'d':4,'c':3,'b':2,'a':1}
keys=d.keys()
keys
dict_keys(['d', 'c', 'b', 'a'])
sorted(keys)
['a', 'b', 'c', 'd']
for z in sorted(keys):print(d.get(z))1
2
3
4for y in sorted(keys):print(y,d.get(y))a 1
b 2
c 3
d 4sorted(d.items())
[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
for k,v in sorted(d.items()):print('{}={}'.format(k,v))a=1
b=2
c=3
d=4fav_food_poll={'maggie':'egg','kendall':'fish','ben':'salmon','arianna':'chocolate'}
for name in sorted(fav_food_poll.keys()):
#对fav_food_poll.keys()调用了sorted()函数 这让python列出字典中所有的键 并且在遍历之前对所有键进行排序print(name+" 's fav food is "+fav_food_poll[name])arianna 's fav food is chocolate
ben 's fav food is salmon
kendall 's fav food is fish
maggie 's fav food is egg#先声明一个空字典
student={}
#再分行添加键值对
student['name']='kylie'
student['age']=20
student
{'name': 'kylie', 'age': 20}
#使用字典来存储用户提供的数据或者在编写能够自动生成大量键-值对的代码时,通常需要先定义一个空字典#遍历字典表里的所有键值对——如果想获取字典中的所有键值对信息,可以用for循环遍历
#假设现在有一个字典表 储存的是一个人的用户名,姓氏和名字 即一个人的多项信息
user={'username':'hello','firstname':'kendall','lastname':'jenner'}
for k,v in user.items():
#此行代码让python遍历字典中的每一对键值对,并且将键储存在变量k,将值储存在变量v中print(k,v)username hello
firstname kendall
lastname jenner
#换一种打印方法
for k,v in user.items():print(k+':')print(v)username:
hello
firstname:
kendall
lastname:
jenner
#换一种打印方法
for k,v in user.items():print(k+': '+v)username: hello
firstname: kendall
lastname: jenner
#通过遍历 就可以获得这个人的所有信息#假设现在有一个字典表 储存的是一项最喜爱食物的调查结果
d={'sarah':'egg','jack':'salmon','mike':'milk','jordan':'bread'}
for n,f in d.items():print(n.title()+'\'s fav food is '+f)Sarah's fav food is egg
Jack's fav food is salmon
Mike's fav food is milk
Jordan's fav food is breadfor n,f in d.items():print(f+" is "+n+"'s fav food")egg is sarah's fav food
salmon is jack's fav food
milk is mike's fav food
bread is jordan's fav food
#通过遍历,就可以将全部的调查结果都打印出来了#遍历字典中的所有键
d={'sarah':'egg','jack':'salmon','mike':'milk','jordan':'bread'}
for name in d.keys():
#上面这行代码就是让python遍历字典中的所有键,并以此存储到变量name里面print(name.title())Sarah
Jack
Mike
Jordan
#遍历字典时会默遍历所有的键 因此如果不写.keys()输出的结果也是一样的
for name in d:print(name.title())Sarah
Jack
Mike
Jordan#在遍历键的循环中,还可以使用当前的键来访问与之相关联的值
d={'sarah':'egg','jack':'salmon','mike':'milk','jordan':'bread'}
l=['sarah','mike']
for name in d.keys():if name in l:print('hi! '+name+' I see your fav food is '+d[name]+'!')hi! sarah I see your fav food is egg!
hi! mike I see your fav food is milk!
#在上述代码中,我们先做for循环遍历字典表中所有的键提取出来放在name变量里,然后检查当前的name对应的key是否在列表里 如果在 则打印一句问候语#我们还可以使用遍历key来确定某个人是否接受了该调查
if 'erin' not in d.keys():
#.keys()返回的是字典表中所有的键,上面这行代码就是检查'erin'是否包含在所返回的这个包含所有键的视图中,若不在,则打印相应的语句print('erin,please take the poll')erin,please take the poll#使用.values()会把提取字典中所有的值,而没有考虑是否重复
fav_food_poll = {'maggie': 'egg', 'kendall': 'fish', 'ben': 'salmon', 'arianna': 'chocolate', 'ruby': 'egg','erin': 'egg', 'jack': 'salmon'}
print('The following food has been mentioned: ')
for food in fav_food_poll.values():print(food)The following food has been mentioned: 
egg
fish
salmon
chocolate
egg
egg
salmonProcess finished with exit code 0#为剔除重复项,可使用集合,集合中每个元素必须是独一无二的不允许重复的 我们可以对.values()返回的所有值调用set() 通过调用set()来去让python找出values中独一无二的值
fav_food_poll = {'maggie': 'egg', 'kendall': 'fish', 'ben': 'salmon', 'arianna': 'chocolate', 'ruby': 'egg','erin': 'egg', 'jack': 'salmon'}
print('The following food has been mentioned: ')
for food in set(fav_food_poll.values()):print(food)The following food has been mentioned: 
chocolate
fish
salmon
eggProcess finished with exit code 0

字典表常见操作总结

声明一个空字典
字典名={}

声明一个字典表
字典名={‘key1’:‘value1’,‘key2’:‘value2’}
名称=dict(key1=‘value1’,key2=‘value2’)

访问字典中的值:
字典名[‘key’]
字典名.get(‘key’)
字典名.get(‘key’,‘默认值’)

添加键值对
字典名[‘new key’]=‘new value’

用len()函数计算字典表的长度
len(字典名)

字典表支持原位改变
字典名[‘需要修改对应值的key’]=‘new value’

字典表的合并
字典1.update(字典2)

删除某一个键值对
字典名.pop(‘需要删除的键值对的键’)
del 字典名['需要删除的键值对的键’]

查看字典里所有的键/值/键值对
字典名.keys()
字典名.values()
字典名.items()

遍历字典表里的所有键值对
for k,v in 字典表.items():
print()

遍历字典表里的所有键
for k in 字典表.keys():
print()
for k in 字典表:
print()

按顺序遍历字典里的所有键
for k in sorted(字典.keys()):
print()

遍历字典里所有的值
for v in 字典表.values():
print()

剔除值当中的重复项
set(字典表.values())


https://www.fengoutiyan.com/post/15715.html

相关文章:

  • dict海词词典
  • dict词典官方下载
  • dict应用
  • 字典
  • 词典字典
  • dict字典用途用法
  • 字典的英文dictionary
  • dict字典下载
  • 鏡像模式如何設置在哪,圖片鏡像操作
  • 什么軟件可以把圖片鏡像翻轉,C#圖片處理 解決左右鏡像相反(旋轉圖片)
  • 手機照片鏡像翻轉,C#圖像鏡像
  • 視頻鏡像翻轉軟件,python圖片鏡像翻轉_python中鏡像實現方法
  • 什么軟件可以把圖片鏡像翻轉,利用PS實現圖片的鏡像處理
  • 照片鏡像翻轉app,java實現圖片鏡像翻轉
  • 什么軟件可以把圖片鏡像翻轉,python圖片鏡像翻轉_python圖像處理之鏡像實現方法
  • matlab下載,matlab如何鏡像處理圖片,matlab實現圖像鏡像
  • 圖片鏡像翻轉,MATLAB:鏡像圖片
  • 鏡像翻轉圖片的軟件,圖像處理:實現圖片鏡像(基于python)
  • canvas可畫,JavaScript - canvas - 鏡像圖片
  • 圖片鏡像翻轉,UGUI優化:使用鏡像圖片
  • Codeforces,CodeForces 1253C
  • MySQL下載安裝,Mysql ERROR: 1253 解決方法
  • 勝利大逃亡英雄逃亡方案,HDU - 1253 勝利大逃亡 BFS
  • 大一c語言期末考試試題及答案匯總,電大計算機C語言1253,1253《C語言程序設計》電大期末精彩試題及其問題詳解
  • lu求解線性方程組,P1253 [yLOI2018] 扶蘇的問題 (線段樹)
  • c語言程序設計基礎題庫,1253號C語言程序設計試題,2016年1月試卷號1253C語言程序設計A.pdf
  • 信奧賽一本通官網,【信奧賽一本通】1253:抓住那頭牛(詳細代碼)
  • c語言程序設計1253,1253c語言程序設計a(2010年1月)
  • 勝利大逃亡英雄逃亡方案,BFS——1253 勝利大逃亡
  • 直流電壓測量模塊,IM1253B交直流電能計量模塊(艾銳達光電)
  • c語言程序設計第三版課后答案,【渝粵題庫】國家開放大學2021春1253C語言程序設計答案
  • 18轉換為二進制,1253. 將數字轉換為16進制
  • light-emitting diode,LightOJ-1253 Misere Nim
  • masterroyale魔改版,1253 Dungeon Master
  • codeformer官網中文版,codeforces.1253 B
  • c語言程序設計考研真題及答案,2020C語言程序設計1253,1253計算機科學與技術專業C語言程序設計A科目2020年09月國家開 放大學(中央廣播電視大學)
  • c語言程序設計基礎題庫,1253本科2016c語言程序設計試題,1253電大《C語言程序設計A》試題和答案200901
  • 肇事逃逸車輛無法聯系到車主怎么辦,1253尋找肇事司機