从字典列表中过滤和提取元素

Filter and Extract element from List of Dictionary

我有一个命名元组列表如下

record = [({
   "first_name":"nadbor",
   "last_name":"drozd",
   "occupation":"data scientist",
   "markingAgentUsed":[
      {
         "consumableLabelCode":"L",
          "amountUsed":{
            "amount" : 100,
            "unit": "litre"
          }
      },
     {
         "consumableLabelCode":"Y",
          "amountUsed":{
            "amount" : 300,
            "unit": "mililitre"
          }
      },
     {
         "consumableLabelCode":"0",
          "amountUsed":{
            "amount" : 999,
            "unit": "gallon"
          }
      }
   ]
})]


[{'first_name': 'nadbor', 'last_name': 'drozd', 'occupation': 'data scientist', 'markingAgentUsed': [{'consumableLabelCode': 'L', 'amountUsed': {'amount': 100, 'unit': 'litre'}}, {'consumableLabelCode': 'Y', 'amountUsed': {'amount': 300, 'unit': 'mililitre'}}, {'consumableLabelCode': '0', 'amountUsed': {'amount': 999, 'unit': 'gallon'}}]}]

我想根据LabelCode的一个输入参数提取值,我想提取两个值amount和unit。

例如,如果我通过 O,我应该得到 999 和加仑作为输出。

record = [({
   "first_name":"nadbor",
   "last_name":"drozd",
   "occupation":"data scientist",
   "markingAgentUsed":[
      {
         "consumableLabelCode":"L",
          "amountUsed":{
            "amount" : 100,
            "unit": "litre"
          }
      },
     {
         "consumableLabelCode":"Y",
          "amountUsed":{
            "amount" : 300,
            "unit": "mililitre"
          }
      },
     {
         "consumableLabelCode":"0",
          "amountUsed":{
            "amount" : 999,
            "unit": "gallon"
          }
      }
   ]
})]

userKey = '0'
for entry in record[0]['markingAgentUsed']:
    if entry['consumableLabelCode'] == userKey:
        print("Amount - {}".format(entry['amountUsed']['amount']) )
        print("Units - {}".format(entry['amountUsed']['unit']) )
    

这都是关于理解数据结构的嵌套(这不是一个命名的元组,而是一个字典元组列表和一个字典列表,其中一些键本身就是字典:-/很少!这篇文章代码提取您要求的内容:

inp = '0'

for ma in record[0]['markingAgentUsed']:
    if ma['consumableLabelCode'] == inp:
        print(ma['amountUsed']['amount'], ma['amountUsed']['unit'])