python - 使用字典理解创建字典,其中键是字母,值是 1-26

标签 python dictionary dictionary-comprehension

alphaValueDict = OrderedDict.fromkeys(string.ascii_uppercase,range(0)
i = 1
for k,v in alphaValueDict.iteritems():
    alphaValueDict[k] = [i]
    i += 1
return alphaValueDict

我需要创建一个有序的 dict ,其中键是字母表中的所有字母,值是 1 - 26。我的问题是,如何使用 dict comprehension 在一行中执行此操作?

最佳答案

你可以完全避免字典理解:

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

使用OrderedDict:

>>> import string
>>> from collections import OrderedDict
>>> OrderedDict(zip(string.ascii_lowercase, range(1,27)))
OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5), ('f', 6), ('g', 7), ('h', 8), ('i', 9), ('j', 10), ('k', 11), ('l', 12), ('m', 13), ('n', 14), ('o', 15), ('p', 16), ('q', 17), ('r', 18), ('s', 19), ('t', 20), ('u', 21), ('v', 22), ('w', 23), ('x', 24), ('y', 25), ('z', 26)])

只有当你需要做一些更多的计算来获取键/值或者它增强可读性时,我才会使用 dict-comprehension(极端示例:{noun : age for noun, age in something() 让您了解我们在谈论什么,而 dict(something()) 则不会。

关于python - 使用字典理解创建字典,其中键是字母,值是 1-26,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19542820/

相关文章:

python - 使用 Google Calendar API v3 手动验证我的用户帐户

python sqlite 将行添加到 sql 数据库,其中行作为字典给出

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

python - Jupyter如何获取与特定值匹配的整行

python - 如何在 Ubuntu 12.04 Precise 上正确安装 GTK+?

python - 按数值对字典(文本键)进行排序

swift - 如何在 Swift 中将核心数据对象提取到字典中?

Swift 字典理解

python - 如何使用字典理解从列表中创建和增加字典中的值

python - 如何让 Python 记住函数内部创建的列表以供将来使用