首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python:通过键获取字典中的值并使用它们创建数组

Python:通过键获取字典中的值并使用它们创建数组
EN

Stack Overflow用户
提问于 2021-11-15 20:47:36
回答 2查看 39关注 0票数 2

我有一本这样的字典:

代码语言:javascript
运行
复制
{
  "0": {}, 
  "1": {}, 
  "2": {}, 
  "3": {}, 
  "4": {}, 
  "5": {}, 
  "6": {}, 
  "7": {}, 
  "8": {}, 
  "9": {}, 
  "10": {}, 
  "11": {}, 
  "12": {
    "PNR": "51313542"
  }, 
  "13": {}, 
  "14": {}, 
  "15": {
    "PNR": "13151351351"
  }, 
  "16": {
    "PNR": "13151351351"
  }, 
  "17": {
    "PNR": "13151351351"
  }, 
  "18": {
    "PNR": "13151351351"
  }, 
  "19": {
    "PNR": "13151351351"
  }, 
  "20": {
    "PNR": "13151351351"
  }, 
  "21": {
    "PNR": "13151351351"
  }, 
  "22": {
    "PNR": "13151351351"
  }, 
  "23": {
    "PNR": "13151351351"
  }, 
  "24": {
    "PNR": "13151351351"
  }
}

我只想得到PNR,并用它们创建一个数组。

我尝试了这个方法来获得PNR值(把"output“作为我的判断):

代码语言:javascript
运行
复制
d_ = output.get("PNR")

但它什么也不给。

无论我的dict中有多少个元素,我如何获得PNR值并用它们创建一个数组?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-11-15 20:53:19

您可以使用列表理解:

代码语言:javascript
运行
复制
[v["PNR"] for v in dic.values() if "PNR" in v.keys()]

输出:

代码语言:javascript
运行
复制
['51313542', '13151351351', '13151351351', '13151351351', '13151351351', '13151351351', '13151351351', '13151351351', '13151351351', '13151351351', '13151351351']
票数 3
EN

Stack Overflow用户

发布于 2021-11-15 20:54:53

如果PNR不在同一级别,您可以使用递归方法:

代码语言:javascript
运行
复制
def get_pnr(dct):
    pnrs = []
    for k, v in dct.items():
        if k == 'PNR':
            pnrs += [v]
        if isinstance(v, dict):
            pnrs.extend(get_pnr(v))
            
    return pnrs

a = get_pnr(d)
print(a)

输出

代码语言:javascript
运行
复制
['51313542', '13151351351', '13151351351', '13151351351', '13151351351', '13151351351', '13151351351', '13151351351', '13151351351', '13151351351', '13151351351']
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69980673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档