如何获取python字典中具有特定键的所有项目的值?

时间:2019-01-15 16:27:51

标签: python dictionary

我有一个这样格式化的字典(它缺少值,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': },

我需要访问该键为“ key”的所有值。

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

这抓住了第一个的钥匙,但是我需要大约60+。我已经尝试过各种发现的事情,但似乎没有成功。

注意:不是开发人员:)

1 个答案:

答案 0 :(得分:-1)

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

其中一种方法是假设您需要的JIRA密钥仅是发布密钥,而不是project或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),其中items是传递到itemgetter的参数的集合。因此,itemgetter('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])

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

  

将两个参数的函数累计应用于序列的各项,   从左到右,以便将序列减少为单个值。

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