python - 如何获取我的 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 多个。我尝试了各种我发现的东西,但似乎都没有成功。
注意:不是开发人员:)
解决方案
一如既往,有多种方法可以解决问题。
其中一种方法,假设您需要的 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)
在哪里。因此,将包装搜索并且应用于字典的函数将返回它的和值,在这种情况下只需要。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])
归约运算符,来自其文档字符串:
将两个参数的函数从左到右累积应用于序列的项目,以将序列简化为单个值。
其他步骤是评估生成器表达式和循环理解,您可以在此站点(和 Google)周围找到大量材料。
推荐阅读
- python-3.6 - 通过 pyinstaller 设置相对路径失败
- mongodb - MongoDb:在带有条件的文档中的数组内投影元素的属性
- javascript - nodejs为什么不能用过滤器删除元素
- python - 获取当前屏幕会话的名称
- typescript - 全局范围的扩充只能直接嵌套在外部模块或环境模块声明中 (2669)
- servlets - 当每个servle结束时如何保持服务器和客户端之间的会话?
- css - 专注于输入字段剪辑模态背景
- c++ - 我用 C++ 编写了一个程序,通过空格键将单词从一行中分离出来,并将这些单词显示为一个数组。我的代码有什么问题?
- rust - 如何在 Rust 中将两个 i16 相加或相乘以形成一个 i32 而不会溢出?
- botframework - 通过 api 向微软团队中的机器人用户发送消息