Python - 在一行中将多个字典值分配给不同的变量

标签 python

我有以下代码(顺便说一句,它会产生语法错误)。有人可以帮助我修复它,以便我可以获得产生预期结果的版本吗?

al = [{'a': 1, 'b': 2, 'c': 3}, {'a': 4, 'b': 5, 'c': 6}, {'a': 7, 'b': 8, 'c': 9}, {'a': 10, 'b': 11, 'c': 12}]
a, b, c = [i.a, i.b, i.c for i in al]

预期结果:

a = [1, 4, 7, 10]
b = [2, 5, 8, 11]
c = [3, 6, 9, 12]

最佳答案

如果你事先知道 key :

>>> al = [{'a': 1, 'b': 2, 'c': 3}, {'a': 4, 'b': 5, 'c': 6}, {'a': 7, 'b': 8, 'c': 9}, {'a': 10, 'b': 11, 'c': 12}]
>>> a, b, c = [[d[key] for d in al] for key in 'abc'] # ('a', 'b', 'c')
>>> a
[1, 4, 7, 10]
>>> b
[2, 5, 8, 11]
>>> c
[3, 6, 9, 12]

如果您事先不知道 key :

>>> d = {key: [d[key] for d in al] for key in al[0]}
>>> d
{'a': [1, 4, 7, 10], 'c': [3, 6, 9, 12], 'b': [2, 5, 8, 11]}
>>> a, b, c = map(d.get, 'abc') # OR map(d.get, ('a', 'b', 'c'))
>>> a
[1, 4, 7, 10]
>>> b
[2, 5, 8, 11]
>>> c
[3, 6, 9, 12]

关于Python - 在一行中将多个字典值分配给不同的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18733230/

相关文章:

python - 使用字符串作为运算符?

python - 如何使用字符串选择 ndb 属性?

python - 如果存在,如何为每一行返回最低的非 nan 值

python - Cython 中的 "not a type identifier"错误

python - 我需要使用递归函数来检查列表是否被镜像(相同的正向和反向)

python - 如何在 Heroku 中的 Django 中安排单次事件?

python - matplotlib 在空白处写入文本

python - 没有名为 '_gdbm' 的模块

python - 提取 Nx3 数组的特定行,每列都满足条件

python - 如何保留自动添加的 argparse 帮助参数,但从中删除 -h,以便我可以将该选项用于另一个参数