对于 Python 字典,算是 Python 中相当重要的数据类型了。在你学会基础知识后,字典这个概念,将会随同着你前面的学习和工作。
因而,这里有几个相当重要的知识点,大家有必要晓得。
一, 字典是否是无序的
对于这个概念,很多敌人不肯定分明。
在 Python 2.7 中,字典是无序构造。字典我的项目的程序是凌乱的。这意味着我的项目的程序是确定性和可反复的。
>>> # Python 2.7
>>> a_dict = {'color': 'blue', 'fruit': 'apple', 'pet': 'dog'}
>>> a_dict
{'color': 'blue', 'pet': 'dog', 'fruit': 'apple'}
>>> a_dict
{'color': 'blue', 'pet': 'dog', 'fruit': 'apple'}
在 Python 3.5 中,字典依然是无序的,但这次是随机的数据结构。这意味着每次从新运行字典时,您都会失去不同的我的项目程序。
>>> # Python 3.5
>>> a_dict = {'color': 'blue', 'fruit': 'apple', 'pet': 'dog'}
>>> a_dict
{'color': 'blue', 'pet': 'dog', 'fruit': 'apple'}
>>> a_dict
{'color': 'blue', 'pet': 'dog', 'fruit': 'apple'}
在 Python 3.6 及更高版本中,字典是有序的数据结构,这意味着它们放弃元素的程序与它们被引入时的程序雷同。
>>> a_dict = {'color': 'blue', 'fruit': 'apple', 'pet': 'dog'}
>>> a_dict
{'color': 'blue', 'fruit': 'apple', 'pet': 'dog'}
>>> a_dict
{'color': 'blue', 'fruit': 'apple', 'pet': 'dog'}
二,键值调换
假如您有一本字典,因为某种原因须要将键转换为值,值转换为键,应该怎么做呢?
>>> a_dict = {'one': 1, 'two': 2, 'thee': 3, 'four': 4}
>>> new_dict = {}
>>> for key, value in a_dict.items():
... new_dict[value] = key
...
>>> new_dict
{1: 'one', 2: 'two', 3: 'thee', 4: 'four'}
三,根据某种条件,过滤字典
有时候,你须要依据某种条件来过滤字典。那么配合 if 条件语句,是一个很好的抉择。
>>> a_dict = {'one': 1, 'two': 2, 'thee': 3, 'four': 4}
>>> new_dict = {} # Create a new empty dictionary
>>> for key, value in a_dict.items():
... if value <= 2:
... new_dict[key] = value
...
>>> new_dict
{'one': 1, 'two': 2}
四,利用字典中的值,做一些计算
在 Python 中遍历字典时。须要进行一些计算也是很常见的。假如您已将公司销售额的数据存储在字典中,当初您想晓得一年的总收入。
>>> incomes = {'apple': 5600.00, 'orange': 3500.00, 'banana': 5000.00}
>>> total_income = 0.00
>>> for value in incomes.values():
... total_income += value # Accumulate the values in total_income
...
>>> total_income
14100.0
五,字典推导式
字典推导式,是一个和列表推导式一样,具备很弱小性能的知识点。因而,大家肯定要把握。
例如,假如您有两个数据列表,您须要依据它们创立一个新字典。
>>> objects = ['blue', 'apple', 'dog']
>>> categories = ['color', 'fruit', 'pet']
>>> a_dict = {key: value for key, value in zip(categories, objects)}
>>> a_dict
{'color': 'blue', 'fruit': 'apple', 'pet': 'dog'}
六,利用字典推导式,实现键值转换
你会发现,应用字典推导式,是一个更简略、高效的操作。
>>> a_dict = {'one': 1, 'two': 2, 'thee': 3, 'four': 4}
>>> new_dict = {value: key for key, value in a_dict.items()}
>>> new_dict
{1: 'one', 2: 'two', 3: 'thee', 4: 'four'}
七,利用字典推导式,过滤字典
>>> a_dict = {'one': 1, 'two': 2, 'thee': 3, 'four': 4}
>>> new_dict = {k: v for k, v in a_dict.items() if v <= 2}
>>> new_dict
{'one': 1, 'two': 2}
八,利用字典推导式,做一些计算
>>> incomes = {'apple': 5600.00, 'orange': 3500.00, 'banana': 5000.00}
>>> total_income = sum([value for value in incomes.values()])
>>> total_income
14100.0
九,字典排序
从 Python 3.6 开始,字典是有序的数据结构,因而如果您应用 Python 3.6(及更高版本),您将可能通过应用 sorted()并借助字典了解对任何字典的键,进行排序。
>> incomes = {'apple': 5600.00, 'orange': 3500.00, 'banana': 5000.00}
>>> sorted_income = {k: incomes[k] for k in sorted(incomes)}
>>> sorted_income
{'apple': 5600.0, 'banana': 5000.0, 'orange': 3500.0}
十,内置函数,与字典配合应用
Python 提供了一些内置函数,这些函数在您解决汇合(如字典)时可能会很有用。
1.map()函数
假如您有一个蕴含一堆产品价格的字典,并且您须要对它们利用折扣。
>>> prices = {'apple': 0.40, 'orange': 0.35, 'banana': 0.25}
>>> def discount(current_price):
... return (current_price[0], round(current_price[1] * 0.95, 2))
...
>>> new_prices = dict(map(discount, prices.items()))
>>> new_prices
{'apple': 0.38, 'orange': 0.33, 'banana': 0.24}
2.filter()函数
假如您想晓得单价低于 0.40 的产品。
>>> prices = {'apple': 0.40, 'orange': 0.35, 'banana': 0.25}
>>> def has_low_price(price):
... return prices[price] < 0.4
...
>>> low_price = list(filter(has_low_price, prices.keys()))
>>> low_price
['orange', 'banana']
十一,字典解包运算符
这是很多人不分明的概念,Python 3.5 带来了一个乏味的新个性,因而大家须要着重学习。
您能够应用字典解包运算符 (**) 将两个字典合并为一个新字典。
>>> vegetable_prices = {'pepper': 0.20, 'onion': 0.55}
>>> fruit_prices = {'apple': 0.40, 'orange': 0.35, 'pepper': .25}
>>> {**vegetable_prices, **fruit_prices}
{'pepper': 0.25, 'onion': 0.55, 'apple': 0.4, 'orange': 0.35}
如果您尝试合并的字典,具备反复或公共键,则最右侧字典的值将补充上。