我最近开始学习 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”。但是我尝试迭代它的每一种方式,在字典理解中,都会返回“无效语法”错误。
那么,有没有可能做到呢?或者有更好的方法吗?
提前致谢。
最佳答案
您可以使用 dict
和 enumerate
传递 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.count
与 dict
和 zip
一起使用:
from itertools import count
dct = dict(zip(alphabet, count(x)))
或者range
、len
和zip
:
dct = dict(zip(alphabet, range(x, len(alphabet)+x)))
关于python - 在字典理解语句中迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32917821/