python 字典定义日志用法_Python字典用法:权威指南

如果你刚刚开始使用Python, 并且想了解更多信息, 请参加srcmini的Python数据科学入门课程。

字典是一个可变的内置Python数据结构。它在本质上类似于列表, 集合和元组。但是, 它不是由数字序列索引的, 而是基于键索引的, 可以理解为关联数组。在抽象级别上, 它由一个具有关联值的键组成。在Python中, 字典表示哈希表的实现。

你可能想知道什么是钥匙?

好了, 如下图所示, 键是不可变的(不能更改)数据类型, 可以是字符串或数字。但是, 键不能是可变数据类型, 例如列表。键在字典中是唯一的, 并且不能在字典中重复, 如果多次使用, 则后续条目将覆盖先前的值。

键与值连接, 因此创建了类似地图的结构。如果你有一秒钟的时间, 请从图片中删除键, 剩下的就是一个包含数字序列的数据结构。因此, 字典在每个位置都具有一个key:value对。

字典由一对大括号{}表示, 其中的括起来是键:用逗号分隔的值对。

让我们看一下字典的语法:dictionary = {” key_1″:” value_1″, ” key_2″:” value_2″, ” key_3″:” value_3″}#

唯一键

既然你已经知道字典中的键必须是唯一的, 那么让我们借助示例来了解它。

dictionary_unique = {"a": "alpha", "o": "omega", "g": "gamma"}

让我们打印出来。

print(dictionary_unique)

{'a': 'alpha', 'o': 'omega', 'g': 'gamma'}

太好了, 所以到目前为止, 一切都还不错。你可以打印第一个词典输出。现在, 让我们用新值重复键g, 看看会发生什么。

dictionary_unique = {"a": "alpha", "o": "omega", "g": "gamma", "g": "beta"}

print(dictionary_unique)

{'a': 'alpha', 'o': 'omega', 'g': 'beta'}

不出所料, 键g先前的值gamma被值beta覆盖。

不变键

现在, 让我们看看尝试将键定义为可变数据类型时会发生什么。

dictionary_immutable = {["a", "b", "c"]: "alpha", "o": "omega", "g": "gamma", "g": "beta"}

---------------------------------------------------------------------------

TypeError Traceback (most recent call last)

in

----> 1 dictionary_immutable = {["a", "b", "c"]: "alpha", "o": "omega", "g": "gamma", "g": "beta"}

TypeError: unhashable type: 'list'

从上面的输出中, 你可以观察到将字典的第一个键定义为列表会导致TypeError, 因为字典键必须是不可变的类型, 而list是可变的类型。

但是, 有一种解决方法, 就是将列表替换为元组, 因为元组是不可变的数据类型。

dictionary_immutable = {("a", "b", "c"): "alpha", "o": "omega", "g": "gamma", "g": "beta"}

dictionary_immutable

{('a', 'b', 'c'): 'alpha', 'o': 'omega', 'g': 'beta'}

访问键和值

由于你现在知道如何创建字典, 因此让我们学习从字典中访问键和值。要访问键值对, 可以使用.items()方法, 该方法将以键, 值元组对的形式返回dict_items列表。

dictionary_unique.items()

dict_items([('a', 'alpha'), ('o', 'omega'), ('g', 'beta')])

若要分别访问键和值, 可以在字典或.keys()和.values()方法上使用for循环。

for key, value in dictionary_unique.items(): #accessing keys

print(key, end=', ')

a, o, g,

for key, value in dictionary_unique.items(): #accessing values

print(value, end=', ')

alpha, omega, beta,

dictionary_unique.keys() #accessing keys without for loop

dict_keys(['a', 'o', 'g'])

dictionary_unique.values() #accessing values without for loop

dict_values(['alpha', 'omega', 'beta'])

你甚至可以通过将键指定为字典的参数来访问值。

dictionary_unique['a']

'alpha'

dictionary_unique['g']

'beta'

嵌套词典

创建嵌套字典非常简单。在嵌套字典中, 你可以在字典中传入字典或简单地将其放入;字典作为值传递给主字典的键。

在这里, 你将在嵌套字典dictionary_nested内创建一个srcmini字典。

dictionary_nested = {"srcmini":{"Deep Learning": "Python", "Machine Learning": "Pandas"}, "linkedin":"jobs", "nvidia":"hardware"}

dictionary_nested

{'srcmini': {'Deep Learning': 'Python', 'Machine Learning': 'Pandas'}, 'linkedin': 'jobs', 'nvidia': 'hardware'}

dictionary_nested['srcmini']['Deep Learning']

'Python'

dictionary_nested['srcmini']['Machine Learning']

'Pandas'

dictionary_nested['linkedin']

'jobs'

dictionary_nested['nvidia']

'hardware'

字典理解

字典理解可用于根据任意键和值表达式创建字典。这是创建字典的一种简单明了的方法, 并且通常比循环实现的速度更快。

import time

t1 = time.time()

dict_comprehension = {i: i**3 for i in range(200000)}

print(time.time() - t1)

0.0897526741027832

让我们打印前十个键:dict_comprehension词典中的值对。为此, 你将从itertools内置包中导入islice并将n指定为要提取的多个键值对。

from itertools import islice

comp_10 = list(islice(dict_comprehension.items(), 10))

print(comp_10)

[(0, 0), (1, 1), (2, 8), (3, 27), (4, 64), (5, 125), (6, 216), (7, 343), (8, 512), (9, 729)]

import time

t1 = time.time()

dict_comprehension = dict()

for i in range(200000):

dict_comprehension[i+1] = i**3

print(time.time() - t1)

0.10853934288024902

从上面的两种字典实现中可以看到, 以最小的裕量理解字典仍然是运行时间上的赢家。你会注意到, 随着不断增加range参数, 时间差也会增加。

词频

在这种情况下, 从一系列书面文本中, 一串文本(也称为语料库)使我们可以借助词典来创建词频。

corpus = 'learn all about the Python Dictionary and its potential. \

You would also learn to create word frequency using the Dictionary'

word_freq = dict()

corpus_word = str(corpus).split()

for word in range(len(corpus_ref)):

if corpus_word[word] not in word_freq:

word_freq[corpus_word[word]] = 1

else:

word_freq[corpus_word[word]] += 1

word_freq

{'learn': 2, 'all': 1, 'about': 1, 'the': 2, 'Python': 1, 'Dictionary': 2, 'and': 1, 'its': 1, 'potential.': 1, 'You': 1, 'would': 1, 'also': 1, 'to': 1, 'create': 1, 'word': 1, 'frequency': 1, 'using': 1}

大!因此, 从上述输出中可以看到, 借助Python词典, 你可以从一串文本中获得单词计数或单词频率。

恭喜你完成了本教程。

请随时在下面的评论部分中提出与本教程相关的任何问题。

如果你刚刚开始使用Python, 并且想了解更多信息, 请参加srcmini的Python数据科学入门课程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值