跳转到内容

Python 编程/字典

来自维基教科书,开放的书籍,开放的世界


Python 中的字典是通过键而不是索引访问的无序值的集合。键必须是可散列的:整数、浮点数、字符串、元组和冻结集合是可散列的。列表、字典和除冻结集合以外的集合不可散列。字典早在 Python 1.4 中就已存在。

Python 中的字典概述

dict1 = {}                     # Create an empty dictionary
dict2 = dict()                 # Create an empty dictionary 2
dict2 = {"r": 34, "i": 56}     # Initialize to non-empty value
dict3 = dict([("r", 34), ("i", 56)])      # Init from a list of tuples
dict4 = dict(r=34, i=56)       # Initialize to non-empty value 3
dict1["temperature"] = 32      # Assign value to a key
if "temperature" in dict1:     # Membership test of a key AKA key exists
  del dict1["temperature"]     # Delete AKA remove
equalbyvalue = dict2 == dict3
itemcount2 = len(dict2)        # Length AKA size AKA item count
isempty2 = len(dict2) == 0     # Emptiness test
for key in dict2:              # Iterate via keys
  print (key, dict2[key])        # Print key and the associated value
  dict2[key] += 10             # Modify-access to the key-value pair
for key in sorted(dict2):      # Iterate via keys in sorted order of the keys
  print (key, dict2[key])        # Print key and the associated value
for value in dict2.values():   # Iterate via values
  print (value)
for key, value in dict2.items(): # Iterate via pairs
  print (key, value)
dict5 = {} # {x: dict2[x] + 1 for x in dict2 } # Dictionary comprehension in Python 2.7 or later
dict6 = dict2.copy()             # A shallow copy
dict6.update({"i": 60, "j": 30}) # Add or overwrite; a bit like list's extend
dict7 = dict2.copy()
dict7.clear()                  # Clear AKA empty AKA erase
sixty = dict6.pop("i")         # Remove key i, returning its value
print (dict1, dict2, dict3, dict4, dict5, dict6, dict7, equalbyvalue, itemcount2, sixty)

字典表示法

[编辑 | 编辑源代码]

字典可以直接创建,也可以从序列转换。字典用大括号括起来,{}

>>> d = {'city':'Paris', 'age':38, (102,1650,1601):'A matrix coordinate'}
>>> seq = [('city','Paris'), ('age', 38), ((102,1650,1601),'A matrix coordinate')]
>>> d
{'city': 'Paris', 'age': 38, (102, 1650, 1601): 'A matrix coordinate'}
>>> dict(seq)
{'city': 'Paris', 'age': 38, (102, 1650, 1601): 'A matrix coordinate'}
>>> d == dict(seq)
True

此外,字典可以通过压缩两个序列轻松创建。

>>> seq1 = ('a','b','c','d')
>>> seq2 = [1,2,3,4]
>>> d = dict(zip(seq1,seq2))
>>> d
{'a': 1, 'c': 3, 'b': 2, 'd': 4}

字典操作

[编辑 | 编辑源代码]

字典的操作有些独特。切片不受支持,因为项目没有固有的顺序。

>>> d = {'a':1,'b':2, 'cat':'Fluffers'}
>>> d.keys()
['a', 'b', 'cat']
>>> d.values()
[1, 2, 'Fluffers']
>>> d['a']
1
>>> d['cat'] = 'Mr. Whiskers'
>>> d['cat']
'Mr. Whiskers'
>>> 'cat' in d
True
>>> 'dog' in d
False

合并两个字典

[编辑 | 编辑源代码]

您可以使用主字典的 update 方法来合并两个字典。请注意,update 方法会在元素冲突时合并现有元素。

>>> d = {'apples': 1, 'oranges': 3, 'pears': 2}
>>> ud = {'pears': 4, 'grapes': 5, 'lemons': 6}
>>> d.update(ud)
>>> d
{'grapes': 5, 'pears': 4, 'lemons': 6, 'apples': 1, 'oranges': 3}
>>>

从字典中删除

[编辑 | 编辑源代码]
del dictionaryName[membername]

编写一个程序,该程序

  1. 要求用户输入一个字符串,然后创建以下字典。值是字符串中的字母,相应的键是字符串中的位置。 https://docs.pythonlang.cn/2/tutorial/datastructures.html#looping-techniques
  2. 用值 "Pie" 替换键为整数 3 的条目。
  3. 要求用户输入一个数字字符串,然后打印出与这些数字对应的值。
[编辑 | 编辑源代码]
华夏公益教科书