python - 在字典理解语句中迭代

标签 python dictionary dictionary-comprehension

我最近开始学习 python,所以我敢肯定,很多我不知道的事情可能很容易解决。但是,搜索了很多问题,我找不到这个问题的答案。

是否可以在字典理解语句中迭代一个变量?

在寻找答案时我发现了这个:

{ _key : _value(_key) for _key in _container }

Wich,我现在知道,是一种在理解中循环的方式,但为了让这个对我有用,我需要能够迭代“_container”中每个“_key”的值。

一个非常基本的例子:

alphabet = 'abcdefghijklmnopqrstuvwxyz'

x = 1

alpha_numbers = {char : x for char in alphabet}

对于“字母表”容器中的每个“字符”,我希望“x”为“x += 1”。但是我尝试迭代它的每一种方式,在字典理解中,都会返回“无效语法”错误。

那么,有没有可能做到呢?或者有更好的方法吗?

提前致谢。

最佳答案

您可以使用 dictenumerate 传递 x 作为起始值:

alphabet = 'abcdefghijklmnopqrstuvwxyz'

dct = dict(enumerate(alpahbet, x)) # start=x i.e 1

演示:

In [43]: print dict(enumerate(alphabet,1))
{1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e', 6: 'f', 7: 'g', 8: 'h', 9: 'i', 10: 'j', 11: 'k', 12: 'l', 13: 'm', 14: 'n', 15: 'o', 16: 'p', 17: 'q', 18: 'r', 19: 's', 20: 't', 21: 'u', 22: 'v', 23: 'w', 24: 'x', 25: 'y', 26: 'z'}

或者使用 enumerate 和 dict comp:

 dct = {i:k for i,k in enumerate(alphabet,x)}

要将字母作为键颠倒 i 和 k 的顺序:

dct = {k:i for i,k in enumerate(alphabet,x)}

或者将 itertools.countdictzip 一起使用:

from itertools import count
dct = dict(zip(alphabet, count(x)))

或者rangelenzip:

 dct = dict(zip(alphabet, range(x, len(alphabet)+x)))

关于python - 在字典理解语句中迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32917821/

相关文章:

Python 字典语法,有一个 for 条件

python - 为什么在相同但以不同方式创建的嵌套字典中将值分配给键会导致不同的结果?

python - 字典理解为内部字典中的每个键计算跨字典的统计数据

python - Raspberry ALSA 声音输出/输入从机

.net - 如何在 web.config 文件中存储字典对象?

Python:列表字典理解

python - 在 pandas python 中匹配一个表并将值映射到另一个表

python - 日期时间中丢失的微秒

python - 打印列表中第一个、第二个出现的字符

python - gensim中filter_extreme的使用误区