Python基础知识——字典

论坛 期权论坛 期权     
就当我在胡言乱语吧   2019-7-8 05:51   3713   0
字典的概念:
字典(拼音:zì diǎn;英文:dictionary,character dictionary)是为字词提供音韵、意思解释、例句、用法等等的工具书。

Definitionof dictionary
1: a reference source in print or electronic form containing wordsusually alphabetically arranged along with information about their forms,pronunciations, functions, etymologies, meanings, and syntactic and idiomaticuses
印刷或电子形式的参考源,包含通常按字母顺序排列的单词以及有关其形式,发音,功能,词源,含义以及句法和惯用用途的信息
2: a reference book listing alphabetically terms or names importantto a particular subject or activity along with discussion of their meanings andapplications
按字母顺序列出对特定主题或活动重要的术语或名称,并讨论其含义和应用的参考书
3: a reference book listing alphabetically the words of one languageand showing their meanings or translations in another language
按字母顺序列出一种语言的单词,并用另一种语言显示其含义或翻译的参考书
4: a computerized list (as of items of data or words) used forreference (as for information retrieval or word processing)
用于参考的计算机化列表(作为数据或单词项)(用于信息检索或文字处理)

那么,Python中的字典到底是什么?
先来查看官方文档里面的解释
Anassociative array, where arbitrary keys are mapped to values. The keys can beany object with __hash__()and __eq__()methods. Called a hash in Perl.
关联数组,其中任意键映射到值。键可以是具有__hash __()和__eq __()方法的任何对象。在Perl中称为哈希。

呃!!!什么是哈希?什么是Perl?
Perl,一种功能丰富的计算机程序语言,运行在超过100种计算机平台上,适用广泛,从大型机到便携设备,从快速原型创建到大规模可扩展开发。
hash(散列、杂凑)函数,是将任意长度的数据映射到有限长度的域上。
好像要走偏了。。。

Anyway!
不管这个了,我们在https://docs.python.org/3/这个网站来搜一下什么是Dictionary.
What Is a Dictionary?
什么是字典
Mutable unordered set…
可变无序集......
Adictionary is a mutable unordered set of key:value pairs.  Its values can contain references to any typeof object.
字典是一组可变的无序键值对。其值可以包含对任何类型对象的引用。
In other languages, similar data structures are often called associative arrays or hash  tables.
在其他语言中,类似的数据结构通常称为关联数组或哈希表。

那么这就很清楚了。在Python中,字典是一个可变无序集。
Mutable可变:意味着它里面的对象可以像列表一样添加、修改、删除
unordered无序:意味着字典里面的对象排列顺序改变,不改变字典本身
set集:字典是一个集合,类似于列表
key:value pairs键值对
在一般的字典里面,比如说英汉字典。我们要找某个单词的意思,类比一下,Python里面字典的键值对。我们要找的单词就对应Python字典中的键,而单词的解释就对应Python字典里面的值。
那么,在英汉字典里面,一个单词对应多个汉语意思,同样,一个汉语意思也对应了多个英语单词。回到Python,Python中的字典的键值对是不是也一样?
也就是说,一个键可不可以对应多个值,一个值可不可以对应多个键?

Dictionary in Python
Each key is separated from its value by a colon (:), the items areseparated by commas, and the whole thing is enclosed in curly braces. An emptydictionary without any items is written with just two curly braces, like this:{}.
每一个键和值之间用冒号( : )隔开,而每一个item之间用逗号隔开,整个字典放在大括号里面。一个没有任何item的空字典表示为两个大括号,例如 { }
Keys are unique within adictionary while values may notbe. The values of a dictionary can be of any type, but the keys must beof an immutable data type such as strings, numbers, or tuples.
键是独一无二的
但是值不一定
键必须是不可变的数据类型,如字符串,数字或元组
值可以是任意的数据类型

再来看看如何创建一个字典
在Python中,字典的创建有两种方式。
第一种是使用花括号,另一种是使用内建函数dict
比如我有一份iphone和iPad上市时间的表,储存到字典中:
  1.   iPhone = {
复制代码
  1.           "iPhone" : 2007,
复制代码
  1.           "iPhone 3G" : 2008,
复制代码
  1.           "iPhone 3GS" : 2009,
复制代码
  1.           "iPhone 4" : 2010,
复制代码
  1.           "iPhone 4S" : 2011,
复制代码
  1.           "iPhone 5" : 2012,
复制代码
  1.           "iPhone 5S" : 2013,
复制代码
  1.           "iPhone 6" : 2014,
复制代码
  1.           "iPhone 6S" : 2015,
复制代码
  1.           "iPhone 7" : 2016,
复制代码
  1.           "iPhone 8" : 2017,        
复制代码
  1.     }
复制代码
  1.   print(iPhone)
复制代码
  1.   
复制代码
  1.   iPad = dict(
复制代码
  1.           iPad = 2010,
复制代码
  1.           iPad_2 = 2011,
复制代码
  1.           ipad_3 = 2012,
复制代码
  1.           iPad_mini_1 = 2012,
复制代码
  1.           iPad_Air_1 = 2013,
复制代码
  1.           iPad_mini_2 = 2013,
复制代码
  1.           iPad_Air_2 = 2014,
复制代码
  1.           iPad_mini_3 = 2014,
复制代码
  1.           iPad_pro_12_9 = 2015,
复制代码
  1.           iPad_mini_4 = 2015,
复制代码
  1.           iPad_pro9_7 = 2016,
复制代码
  1.           iPad_2017 = 2017,
复制代码
  1.           iPad_pro_10_5 = 2017,
复制代码
  1.           iPad_pro_2_12_9 = 2017,
复制代码
  1.           iPad_2018 = 2018,
复制代码
  1.           iPad_pro_3_12_9 = 2018,
复制代码
  1.           iPad_pro_3_11 = 2018,
复制代码
  1.           iPad_Air_3 = 2019,
复制代码
  1.           iPad_mini_5 = 2019
复制代码
  1.           )
复制代码
  1.   print(iPad)
复制代码
   程序输出为:
  1. {'iPhone': 2007, 'iPhone 3G': 2008, 'iPhone 3GS': 2009, 'iPhone 4': 2010, 'iPhone 4S': 2011, 'iPhone 5': 2012, 'iPhone 5S': 2013, 'iPhone 6': 2014, 'iPhone 6S': 2015, 'iPhone 7': 2016, 'iPhone 8': 2017}
复制代码
  1. {'iPad': 2010, 'iPad_2': 2011, 'ipad_3': 2012, 'iPad_mini_1': 2012, 'iPad_Air_1': 2013, 'iPad_mini_2': 2013, 'iPad_Air_2': 2014, 'iPad_mini_3': 2014, 'iPad_pro_12_9': 2015, 'iPad_mini_4': 2015, 'iPad_pro9_7': 2016, 'iPad_2017': 2017, 'iPad_pro_10_5': 2017, 'iPad_pro_2_12_9': 2017, 'iPad_2018': 2018, 'iPad_pro_3_12_9': 2018, 'iPad_pro_3_11': 2018, 'iPad_Air_3': 2019, 'iPad_mini_5': 2019}
复制代码
在字典中如何获取键值
   
在输出的时候,我想知道iPhone或者iPad具体某一型号的上市时间,比如说iPhone
8。可以直接在字典后面加方括号,方括号里面的内容是字典的键。
  1.   iPhone["iPhone 8"]
复制代码
  1.   Out[1]: 2017
复制代码
在字典中如何添加键值对
    比如在2017年上市了iPhone X ,我想把这个信息放到第一个字典iPhone里面,该怎么添加呢?
    暂时介绍两种添加键值对的方法。
    第一种是直接添加
  1.   iPhone["iPhone X"] = 2017
复制代码
  1.   iPhone
复制代码
  1.   Out[2]:
复制代码
  1.   {'iPhone': 2007,
复制代码
  1.    'iPhone 3G': 2008,
复制代码
  1.    'iPhone 3GS': 2009,
复制代码
  1.    'iPhone 4': 2010,
复制代码
  1.    'iPhone 4S': 2011,
复制代码
  1.    'iPhone 5': 2012,
复制代码
  1.    'iPhone 5S': 2013,
复制代码
  1.    'iPhone 6': 2014,
复制代码
  1.    'iPhone 6S': 2015,
复制代码
  1.    'iPhone 7': 2016,
复制代码
  1.    'iPhone 8': 2017,
复制代码
  1.    'iPhone X': 2017}
复制代码
   第二种是使用方法update( )来更新字典,可以很方便的批量添加键值对
  1.   iPhone.update({"iPhone XR" : 2018,"iPhone XS" : 2018})
复制代码
  1.   iPhone
复制代码
  1.   Out[3]:
复制代码
  1.   {'iPhone': 2007,
复制代码
  1.    'iPhone 3G': 2008,
复制代码
  1.    'iPhone 3GS': 2009,
复制代码
  1.    'iPhone 4': 2010,
复制代码
  1.    'iPhone 4S': 2011,
复制代码
  1.    'iPhone 5': 2012,
复制代码
  1.    'iPhone 5S': 2013,
复制代码
  1.    'iPhone 6': 2014,
复制代码
  1.    'iPhone 6S': 2015,
复制代码
  1.    'iPhone 7': 2016,
复制代码
  1.    'iPhone 8': 2017,
复制代码
  1.    'iPhone X': 2017,
复制代码
  1.    'iPhone XR': 2018,
复制代码
  1.    'iPhone XS': 2018}
复制代码
在字典中如何删除键值对
    使用del 函数
  1.   del iPhone['iPhone']
复制代码
  1.   iPhone
复制代码
  1.   Out[4]:
复制代码
  1.   {'iPhone 3G': 2008,
复制代码
  1.    'iPhone 3GS': 2009,
复制代码
  1.    'iPhone 4': 2010,
复制代码
  1.    'iPhone 4S': 2011,
复制代码
  1.    'iPhone 5': 2012,
复制代码
  1.    'iPhone 5S': 2013,
复制代码
  1.    'iPhone 6': 2014,
复制代码
  1.    'iPhone 6S': 2015,
复制代码
  1.    'iPhone 7': 2016,
复制代码
  1.    'iPhone 8': 2017,
复制代码
  1.    'iPhone X': 2017,
复制代码
  1.    'iPhone XR': 2018,
复制代码
  1.    'iPhone XS': 2018}
复制代码
在字典中如何修改键值对
1,直接修改
  1.   iPhone["iPhone XS"] = 2019
复制代码
  1.   iPhone
复制代码
  1.   Out[5]:
复制代码
  1.   {'iPhone 3G': 2008,
复制代码
  1.    'iPhone 3GS': 2009,
复制代码
  1.    'iPhone 4': 2010,
复制代码
  1.    'iPhone 4S': 2011,
复制代码
  1.    'iPhone 5': 2012,
复制代码
  1.    'iPhone 5S': 2013,
复制代码
  1.    'iPhone 6': 2014,
复制代码
  1.    'iPhone 6S': 2015,
复制代码
  1.    'iPhone 7': 2016,
复制代码
  1.    'iPhone 8': 2017,
复制代码
  1.    'iPhone X': 2017,
复制代码
  1.    'iPhone XR': 2018,
复制代码
  1.    'iPhone XS': 2019}
复制代码
   2,通过update( )更新的方式修改
  1.   iPhone.update({"iphone X" : 2019,"iPhone XR" : 2019})
复制代码
  1.   iPhone
复制代码
  1.   Out[6]:
复制代码
  1.   {'iPhone 3G': 2008,
复制代码
  1.    'iPhone 3GS': 2009,
复制代码
  1.    'iPhone 4': 2010,
复制代码
  1.    'iPhone 4S': 2011,
复制代码
  1.    'iPhone 5': 2012,
复制代码
  1.    'iPhone 5S': 2013,
复制代码
  1.    'iPhone 6': 2014,
复制代码
  1.    'iPhone 6S': 2015,
复制代码
  1.    'iPhone 7': 2016,
复制代码
  1.    'iPhone 8': 2017,
复制代码
  1.    'iPhone X': 2017,
复制代码
  1.    'iPhone XR': 2019,
复制代码
  1.    'iPhone XS': 2019,
复制代码
  1.    'iphone X': 2019}
复制代码
获取所有的键、获取所有的值

  1.   iPhone.keys()
复制代码
  1.   Out[7]: dict_keys(['iPhone 3G', 'iPhone 3GS', 'iPhone 4', 'iPhone 4S', 'iPhone 5', 'iPhone 5S', 'iPhone 6', 'iPhone 6S', 'iPhone 7', 'iPhone 8', 'iPhone X', 'iPhone XR', 'iPhone XS'])
复制代码
  1.   iPhone.values()
复制代码
  1.   Out[8]: dict_values([2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2017, 2018, 2019])
复制代码
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP