我正试图在dict理解中创建多个key:value对,如下所示:
{'ID': (e[0]), 'post_author': (e[1]) for e in wp_users}
我收到"missing ','"
我也这样尝试过:
[{'ID': (e[0]), 'post_author': (e[1])} for e in wp_users]
然后我收到"list indices must be integers, not str"
我明白,但不确定最好的方法来纠正这个问题,如果多个键:值对听写理解是可能的?
Tags:
字典理解每次迭代只能产生一个键值对。接下来的诀窍是产生一个额外的循环来分离两对:
这相当于:
我偶然碰到这个老问题,我不相信这个公认的答案。
接受的答案
接受的答案有什么令人不安的?考虑一下:
wp_users
,e = (1, 'Bill')
,dict是{'ID':1, 'post_author': 'Bill'}
wp_users
,e = (2, 'Bob')
上的第二次迭代,dict被完全覆盖到{'ID':2, 'post_author': 'Bob'}
在每次迭代中,都会覆盖dictional的所有值。您可以避免循环并直接跳到
wp_users
的最后一个元素:或:
我想那不是你想要的。
目前还不清楚您要实现什么,但我看到两个选项:您有一个用户列表
(id, post_author)
,并且您希望创建一个字典列表(每个用户一个dict)或一个元组字典(每个字段一个元组)。您可以将第一个版本按行显示为演示文稿,而将第二个版本按相同数据的列显示为演示文稿。词典目录
试试这个:
对于每个
user
,zip
将创建元组('ID', id)
,('post_author', author)
和dict
将生成字典。现在您可以访问如下字段:元组词典
这更不寻常,但您可能需要一个值为元组的字典:
zip(*wp_users)
只需创建一个元组列表[(id1, id2, ...), (post_author1, post_author2, ...)]
,其余与前一版本类似。奖金
要从行视图中提取列,请执行以下操作:
要从列视图中提取行,请执行以下操作:
我认为你的问题是第二个版本创建了一个字典列表,而不仅仅是一个字典。您正试图使用字符串访问列表,这会引发错误:
相反,只需访问第二个版本作为'wp_list[0]['post_author'],它应该可以正常工作:
相关问题 更多 >
编程相关推荐