Python内置数据结构-字典

字典是python中重要的数据类型,由“键-值”对组成,可通过“键”引用“值”。字典可进行定义、访问、排序等。

创建

#创建

#dictionary_name =

dict1={'语文':90,'数学':95,'英语':115}

print(dict1)

print(type(dict1))

out:

{'语文':90,'数学':95,'英语':115}

访问

字典的访问是通过key值获取相应的value值

#访问

#value=dict[key]

dict1={'语文':90,'数学':95,'英语':115}

value1=dict1["语文"]

print(value1)

out:

90

添加

#添加

dict1={'语文':90,'数学':95,'英语':115}

dict1["物理"]=85

print(dict1)

out:

{'语文':90,'数学':95,'英语':115,'物理':85}

修改

#修改

dict1={'语文':90,'数学':95,'英语':115}

dict1["语文"]=95

print(dict1)

out:

{'语文':95,'数学':95,'英语':115}

删除

pop()删除字典元素

#删除

#pop()删除字典元素

dict1={'语文':90,'数学':95,'英语':115}

dict1.pop('语文')

print(dict1)

out:

{'数学':95,'英语':115}

del()删除字典元素

#del()删除字典元素

dict1={'语文':90,'数学':95,'英语':115}

del(dict1['数学'])

print(dict1)

out:

{'语文':90,'英语':115}

clear()清空字典

#清空字典

dict1={'语文':90,'数学':95,'英语':115}

dict1.clear()

print(dict1)

out:

{}

遍历

for循环

#for循环

dict1={'语文':90,'数学':95,'英语':115}

forxindict1:

print(x,':',dict1[x])

out:

语文 :90

数学 :95

英语 :115

Items()

#items,把字典中的key和value组成元祖,并把这些元祖放在列表中返回

dict1={'语文':90,'数学':95,'英语':115}

print(dict1.items())

for(k,v)indict1.items():

print(k,':',v)

out:

语文 :90

数学 :95

英语 :115

混合型字典(字典有元祖、列表、字典等元素)的创建和访问

#混合型字典的创建和访问

dict1={'语文':(90,100),'数学':{'代数':95,'几何':108},'英语':[115,124,135]}

print(dict1['语文'])

print(dict1['语文'][])

print(dict1['语文'][1])

print(dict1['数学'])

print(dict1['数学']['代数'])

print(dict1['数学']['几何'])

print(dict1['英语'])

print(dict1['英语'][])

print(dict1['英语'][1])

out:

(90,100)

90

100

{'代数':95,'几何':108}

95

108

[115,124,135]

115

124

方法

keys()方法

#keys()方法

dict1={'语文':90,'数学':95,'英语':115}

print(dict1.keys())

out:

dict_keys(['语文','数学','英语'])

values()方法

#values()方法

dict1={'语文':90,'数学':95,'英语':115}

print(dict1.values())

out:

dict_values([90,95,115])

get()方法

#get()方法,key存在则返回key对应的value值,若不存在则返回设置的默认值

dict1={'语文':90,'数学':95,'英语':115}

print(dict1.get('语文','不存在该元素'))

print(dict1.get('生物','不存在该元素'))

out:

90

不存在该元素

update()方法

#update()方法,如果key值存在,则原来的value值会被新值覆盖

dict1={'语文':90,'数学':95,'英语':115}

dict2={'语文':90,'数学':90,'生物':115}

dict1.update(dict2)

print(dict1)

out:

{'语文':90,'数学':90,'英语':115,'生物':115}

setdefault()方法

#setdefault()方法

dict1={}

dict1.setdefault('a','none')#创建新元素并设置默认值

print(dict1)

out:

{'a':'none'}

排序

#排序

dict1={'语文':98,'数学':95,'英语':115}

#按key值排序

print(sorted(dict1.items(),key=lambdad:d[]))

#按value值值排序

print(sorted(dict1.items(),key=lambdad:d[1]))

out:

[('数学',95),('英语',115),('语文',98)]#按key值排序后的结果

[('数学',95),('语文',98),('英语',115)]#按value值排序后的结果

复制

Copy()属于浅拷贝操作,只复制数据,不复制数据的引用;

但深拷贝能够拷贝对象内部的所有数据和引用。

#复制

#copy()

# 浅拷贝操作,只复制数据,不复制数据的引用;

# 深拷贝能够拷贝对象内部的所有数据和引用。

dict1={'语文':98,'数学':95,'英语':115}

dict2={'语文':90,'数学':90,'生物':115}

dict2=dict1.copy()

print(dict2)

out:

{'语文':98,'数学':95,'英语':115}

全局字典

sys.modules模块是一个全局字典

Python启动后加载在内存中。每当第一次导入新的模块,sys.modules都将记录这些模块

当第2次再次导入该模块时,Python会直接在字典查找,从而提升运行速度。

通过对sys.modules模块key和value值的打印,可以查看里面包含的模块、包、以及是所在的路径等。

#全局字典

#sys.modules模块是一个全局字典

# Python启动后加载在内存中。每当第一次导入新的模块,sys.modules都将记录这些模块

#当第2次再次导入该模块时,Python会直接在字典查找,从而提升运行速度。

importsys

print(sys.modules.keys())

print(sys.modules.values())

print(sys.modules['os'])

out:

dict_keys(['builtins','sys','_frozen_importlib','_imp','_warnings','_thread','_weakref','_frozen_importlib_external','_io','marshal','nt','winreg','zipimport','encodings','codecs','_codecs','encodings.aliases','encodings.utf_8','_signal','__main__','encodings.latin_1','io','abc','_weakrefset','site','os','errno','stat','_stat','ntpath','genericpath','os.path','_collections_abc','_bootlocale','_locale','encodings.gbk','_codecs_cn','_multibytecodec','types','functools','_functools','collections','operator','_operator','keyword','heapq','_heapq','itertools','reprlib','_collections','weakref','collections.abc','importlib','importlib._bootstrap','importlib._bootstrap_external','warnings','importlib.util','importlib.abc','importlib.machinery','contextlib','mpl_toolkits','locale','re','enum','sre_compile','_sre','sre_parse','sre_constants','copyreg'])

dict_values([,,,,,,,,,,,,,,,,…])

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180328G09VSY00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券