繁体   English   中英

[python - 获取字典列表中的键列表]

[英][python - get the list of keys in a list of dictionary]

我有一个字典列表
输入:

x = [{'id': 19, 'number': 123, 'count': 1}, 
     {'id': 1, 'number': 23, 'count': 7}, 
     {'id': 2, 'number': 238, 'count': 17},
     {'id': 1, 'number': 9, 'count': 1}]

我将如何获得号码列表:

[123, 23, 238, 9]

谢谢你的阅读

您可以使用列表推导:

numbers = [dictionary.get('number') for dictionary in list_of_dictionaries]

要获得这些数字,您可以使用

>>> [ d['number'] for d in x ]

但这不是您在问题标题中询问的“键列表”。 x 中每个字典 d 的键列表作为d.keys()获得,这将产生类似 ['id', 'number', ...] 的内容。 例如做

>>> [ list(d.keys()) for d in x ]

查看。 如果它们都相等,您可能只对这些列表中的第一个感兴趣。 你可以得到它

>>> list( x[0].keys() )

另请注意,字典的“元素”实际上是而不是 因此,如果您编写,您还将获得列表 ['id', 'number',...]

>>> [ key for key in x[0] ]

或者简单地说(更好):

>>> list( x[0] )

x不是list而是setdict时,获取第一个元素会更加棘手。 在这种情况下,您可以使用next(x.__iter__())

PS:您实际上应该考虑您真正想要的键是什么-先验应该是“id”,而不是“数字”,但是您的“id”有重复项,这与“id”的概念和定义/含义相矛盾' - 然后使用选择的键作为标识符来索引集合'x'的元素。 所以如果键是“数字”,你应该有一个字典(而不是一个列表)

x = {123: {'id': 19, 'count': 1}, 23: {'id': 1, 'count': 7}, ...}

(我还假设这些数字确实是整数[更有效]而不是字符串,但这取决于你)。 然后您也可以执行例如x[123]['count'] += 1来增加条目123的 'count' 。

使用函数式编程方法:

from operator import itemgetter

x_k = list(map(itemgetter('number'), x))
#[123, 23, 238, 9]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM