Python 字典:语法与示例

Python 字典是什么?

Python 中的字典是一种无序且可变的、保存键值对的数据集合。字典中的每个键值对都将键与其关联的值进行映射,从而使其更优化。Python 字典通过花括号 {} 包含逗号分隔的键值对列表来声明。Python 字典分为两个元素:键和值。

  • 键是单个元素
  • 值可以是列表或列表中的列表、数字等。

Python 字典的语法

Dict = { ' Tim': 18,  xyz,.. }

字典用花括号 {} 列出,在这些花括号内,键和值被声明。每个键与值之间用冒号 : 分隔,而每个元素之间用逗号分隔。

Syntax for Python Dictionary

字典键的属性

使用字典键时有两个要点

  • 每个键不允许有多个条目(不允许重复键)
  • 字典中的值可以是任何类型,而键必须是不可变的,如数字、元组
  • 字典键是区分大小写的——具有不同大小写的相同键名在 Python 字典中被视为不同的键。

Python 2 示例

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}   
print (Dict['Tiffany'])

Python 3 示例

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}   
print((Dict['Tiffany']))
  • 在代码中,我们有字典名称“Dict”。
  • 我们在字典中声明了人的姓名和年龄,其中姓名是“键”,年龄是“值”。
  • 现在运行代码
  • 它从字典中检索 Tiffany 的年龄。

Python 字典方法

复制字典

您也可以将整个字典复制到新字典中。例如,这里我们将原始字典复制到了名为“Boys”和“Girls”的新字典中。

Python 2 示例

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}	
Boys = {'Tim': 18,'Charlie':12,'Robert':25}
Girls = {'Tiffany':22}	
studentX=Boys.copy()
studentY=Girls.copy()
print studentX
print studentY

Python 3 示例

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}	
Boys = {'Tim': 18,'Charlie':12,'Robert':25}
Girls = {'Tiffany':22}	
studentX=Boys.copy()
studentY=Girls.copy()
print(studentX)
print(studentY)
  • 我们有原始字典(Dict),其中包含男孩和女孩的姓名和年龄。
  • 但我们想将男孩列表与女孩列表分开,因此我们在名为“Boys”和“Girls”的单独字典中定义了男孩和女孩的元素。
  • 现在我们再次创建了名为“student X”和“student Y”的新字典,其中男孩字典的所有键和值都复制到 student X 中,女孩则复制到 studentY 中。
  • 所以现在您不必查看主字典(Dict)中的整个列表来检查谁是男孩谁是女孩,如果您想要男孩列表,只需打印 student X;如果您想要女孩列表,则打印 StudentY。
  • 因此,当您运行 student X 和 studentY 字典时,它将分别给出“boys”和“girls”字典中存在的所有元素。

更新字典

您还可以通过添加新条目或键值对到现有条目或删除现有条目来更新字典。在此示例中,我们将向现有字典添加另一个姓名“Sarah”。

Python 2 示例

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}	
Dict.update({"Sarah":9})
print Dict

Python 3 示例

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}	
Dict.update({"Sarah":9})
print(Dict)
  • 我们的现有字典“Dict”不包含姓名“Sarah”。
  • 我们使用 `Dict.update` 方法将 Sarah 添加到现有字典中。
  • 现在运行代码,它会将 Sarah 添加到现有字典中。

从字典中删除键

Python 字典允许您从字典列表中删除任何元素。假设您不想要列表中的 Charlie 这个名字,那么您可以使用以下代码删除该键元素。

Python 2 示例

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}	
del Dict ['Charlie']
print Dict

Python 3 示例

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}	
del Dict ['Charlie']
print(Dict)

运行此代码后,它应该会打印出不含 Charlie 的字典列表。

  • 我们使用了 `del Dict` 代码。
  • 代码执行时,它已从主字典中删除了 Charlie。

Dictionary items() 方法

items() 方法返回字典中元组对(键,值)的列表。

Python 2 示例

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}	
print "Students Name: %s" % Dict.items()

Python 3 示例

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}	
print("Students Name: %s" % list(Dict.items()))
  • 我们对 `Dict` 使用 `items()` 方法。
  • 代码执行时,它从字典返回了包含项(键和值)的列表。

检查给定键是否已存在于字典中

对于给定的列表,您还可以检查子字典是否存在于主字典中。这里我们有两个子字典“Boys”和“Girls”,现在我们想检查我们的 Boys 字典是否存在于我们的主“Dict”字典中。为此,我们使用 for 循环方法和 else if 方法。

Python 2 示例

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}
Boys = {'Tim': 18,'Charlie':12,'Robert':25}
Girls = {'Tiffany':22}
for key in Boys.keys():
    if key in Dict.keys():
        print True
    else:       
        print False


Python 3 示例

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}
Boys = {'Tim': 18,'Charlie':12,'Robert':25}
Girls = {'Tiffany':22}
for key in list(Boys.keys()):
    if key in list(Dict.keys()):
        print(True)
    else:       
        print(False)
  • 代码中的 for 循环会检查主字典中的每个键以查找 Boys 键。
  • 如果它存在于主字典中,则应打印 true,否则应打印 false。
  • 当您执行代码时,它会打印“True”三次,因为我们的“Boys”字典中有三个元素。
  • 因此,这表明“Boys”存在于我们的主字典(Dict)中。

对字典进行排序

在字典中,您还可以对元素进行排序。例如,如果我们想按字母顺序打印字典元素的名称,我们需要使用 for 循环。它将相应地对字典中的每个元素进行排序。

Python 2 示例

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}
Boys = {'Tim': 18,'Charlie':12,'Robert':25}
Girls = {'Tiffany':22}
Students = Dict.keys()
Students.sort()
for S in Students:
      print":".join((S,str(Dict[S])))

Python 3 示例

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}
Boys = {'Tim': 18,'Charlie':12,'Robert':25}
Girls = {'Tiffany':22}
Students = list(Dict.keys())
Students.sort()
for S in Students:
      print(":".join((S,str(Dict[S]))))
  • 我们为我们的字典“Dict”声明了变量 students。
  • 然后我们使用 `Students.sort` 代码,它将对字典内的元素进行排序。
  • 但是为了对字典中的每个元素进行排序,我们通过声明变量 S 来运行 for 循环。
  • 现在,当我们执行代码时,for 循环将调用字典中的每个元素,并且它将按顺序打印字符串和值。

Python 字典内置函数

Dictionary len() 方法

len() 函数给出字典中的对数。

例如,

Python 2 示例

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}	
print "Length : %d" % len (Dict)

Python 3 示例

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}	
print("Length : %d" % len (Dict))

当 `len (Dict)` 函数执行时,它给出输出“4”,因为我们的字典中有四个元素。

变量类型

Python 不需要显式声明保留内存空间;它会自动发生。变量赋值使用“=”等号。确定变量类型的代码是“%type (Dict)”。

Python 2 示例

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}	
print "variable Type: %s" %type (Dict)

Python 3 示例

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}	
print("variable Type: %s" %type (Dict))
  • 使用 %type 代码来了解变量类型
  • 代码执行时,它会告诉我们变量类型是字典。

Python 列表 cmp() 方法

比较方法 cmp() 用于在 Python 中比较两个字典的值和键。如果方法返回 0 表示两个字典相等,1 表示 dic1 > dic2,-1 表示 dic1 < dic2。

Python 2 示例

Boys = {'Tim': 18,'Charlie':12,'Robert':25}
Girls = {'Tiffany':22}	
print cmp(Girls, Boys)

Python 3 示例

cmp is not supported in Python 3
  • 我们有两个字典名称,“Boys”和“Girls”。
  • 在代码中,无论您先声明哪个,“cmp(Girls, Boys)”将被视为字典 1。在我们的例子中,我们先声明了“Girls”,因此它将被视为字典 1,而 boys 被视为字典 2。
  • 代码执行时,它会输出 -1。这表明我们的字典 1 小于字典 2。

字典 Str(dict)

使用 Str() 方法,您可以将字典转换为可打印的字符串格式。

Python 2 示例

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}	
print "printable string:%s" % str (Dict)

Python 3 示例

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}	
print("printable string:%s" % str (Dict))
  • 使用代码 `% str (Dict)`
  • 它将以可打印的字符串格式返回字典元素。

以下是所有字典方法的列表

方法 描述 语法
copy() 将整个字典复制到新字典 dict.copy()
update() 通过添加新条目或将键值对添加到现有条目或删除现有条目来更新字典。 Dict.update([other])
items() 返回字典中元组对(键,值)的列表。 dictionary.items()
sort() 您可以对元素进行排序 dictionary.sort()
len() 给出字典中的对数。 len(dict)
cmp() 比较两个字典的值和键 cmp(dict1, dict2)
Str() 将字典转换为可打印的字符串格式 Str(dict)

合并字典

在这里,我们将了解如何将两个给定的字典合并到一个字典中。

我有两个字典,如下所示:

字典1:my_dict1

my_dict1 = {"username": "XYZ", "email": "xyz@gmail.com", "location":"Mumbai"}

字典 2:my_dict2

my_dict2 = {"firstName" : "Nick", "lastName": "Price"}

让我们合并这两个字典 my_dict1 和 my_dict2,创建一个名为 my_dict 的单个字典。

使用 update() 方法合并两个字典

update() 方法将帮助我们用另一个字典合并一个字典。在本例中,我们将用 my_dict2 更新 my_dict1。使用 update() 方法后,my_dict1 将包含 my_dict2 的内容,如下所示。

my_dict1 = {"username": "XYZ", "email": "xyz@gmail.com", "location":"Mumbai"}

my_dict2 = {"firstName" : "Nick", "lastName": "Price"}

my_dict1.update(my_dict2)

print(my_dict1)

输出

{'username': 'XYZ', 'email': 'xyz@gmail.com', 'location': 'Mumbai', 'firstName': 'Nick', 'lastName': 'Price'}

使用 ** 方法合并字典(Python 3.5 及更高版本)

** 在 Python 中称为 Kwargs,它适用于 Python 3.5+ 版本。使用 **,我们可以合并两个字典,它将返回合并后的字典。通过在变量前面加上 **,变量将被其所有内容替换。

以下是使用 ** 合并两个目录的实际示例。

my_dict1 = {"username": "XYZ", "email": "xyz@gmail.com", "location":"Mumbai"}

my_dict2 = {"firstName" : "Nick", "lastName": "Price"}

my_dict =  {**my_dict1, **my_dict2} 

print(my_dict)

输出

{'username': 'XYZ', 'email': 'xyz@gmail.com', 'location': 'Mumbai', 'firstName': 'Nick', 'lastName': 'Price'}

字典成员资格测试

您可以测试一个键是否存在于字典中。此测试只能对字典的键进行,而不能对值进行。成员资格测试使用 **in** 关键字执行。当您使用 **in** 关键字在字典中检查键时,如果键存在,表达式将返回 true,如果不存在,则返回 false。

这是一个显示字典成员资格测试的示例。

my_dict = {"username": "XYZ", "email": "xyz@gmail.com", "location":"Mumbai"}
print("email" in my_dict)
print("location" in my_dict)
print("test" in my_dict)

输出

True
True
False

摘要

  • 编程语言中的字典是一种数据结构,用于存储以某种方式连接的信息。
  • Python 字典定义为两个元素:键和值。
  • 字典不以任何特定顺序存储信息,因此您可能无法按输入顺序取回信息。
  • 键是单个元素
  • 值可以是列表或列表中的列表、数字等。
  • 每个键不允许有多个条目(不允许重复键)
  • 字典中的值可以是任何类型,而键必须是不可变的,如数字、元组或字符串。
  • 字典键是区分大小写的——具有不同大小写的相同键名在 Python 字典中被视为不同的键。