首页 > 解决方案 > 如何获取我的 python 字典中具有特定键的所有项目的值?

问题描述

我有一个格式如下的字典(它缺少值,obv):

{'expand': ,
 'issues': [{'expand': ,
             'fields': {'created': ,
                        'issuetype': {'avatarId': ,
                                      'description': ,
                                      'iconUrl': ,
                                      'id': ,
                                      'name': ,
                                      'self': ,
                                      'subtask': },
                        'priority': {'iconUrl': ,
                                     'id': ,
                                     'name': ,
                                     'self': },
                        'project': {'avatarUrls': {'16x16': ,
                                                   '24x24': ,
                                                   '32x32': ,
                                                   '48x48': },
                                    'id': ,
                                    'key': ,
                                    'name': ,
                                    'projectCategory': {'description': ,
                                                        'id': ,
                                                        'name': ,
                                                        'self': },
                                    'projectTypeKey': ,
                                    'self': },
                        'status': {'description': ,
                                   'iconUrl': ,
                                   'id': ,
                                   'name': ,
                                   'self': ,
                                   'statusCategory': {'colorName': ,
                                                      'id': ,
                                                      'key': ,
                                                      'name': ,
                                                      'self': }}},
             'id': ,
---->        'key': ,
             'cccc': },

我需要访问键是“键”的所有值。

jira_key = dict["issues"][0]["key"]

这抓住了第一个的关键,但我需要 60 多个。我尝试了各种我发现的东西,但似乎都没有成功。

注意:不是开发人员:)

标签: pythondictionary

解决方案


一如既往,有多种方法可以解决问题。

其中一种方法,假设您需要的 JIRA 密钥只是问题密钥,而不是项目或 projectCategory 密钥,是通过使用itemgetter

from operator import itemgetter as itg
key_finder = itg('key')
my_values = list(map(key_finder, DICT_NAME['issues']))

这些itemgetter函数作为理解的包装器,本质上返回传入的参数集合tuple(obj[i] for i in items)在哪里。因此,将包装搜索并且应用于字典的函数将返回它的和值,在这种情况下只需要。itemsitemgetteritemgetter('key', 'id')'key''id''key''id''key'

map(function, iterable)function顺序应用于可迭代的项目,例如function(iterable[0]); function(iterable[1])等。

在您的情况下,必须循环多次并组合结果:

from functools import reduce
issue_key_values = reduce(lambda x,y: x+y, [list(map(key_finder, ll['issues'])) for ll in jira_list])

归约运算符,来自其文档字符串:

将两个参数的函数从左到右累积应用于序列的项目,以将序列简化为单个值。

其他步骤是评估生成器表达式和循环理解,您可以在此站点(和 Google)周围找到大量材料。


推荐阅读