【问题标题】:Python, Dictionary/List SearchingPython,字典/列表搜索
【发布时间】:2026-01-21 10:30:02
【问题描述】:

我目前有以下提供的数据集:

x = list((object[u'Field'] for object in y))

我的问题是我想提取区域值,但这取决于*u'@selected': u'true'* 值的位置。

我想为第一个 one = EMEA 返回一个变量 第二个one = Americas

所以我可以搜索*u'@selected': u'true'*并将以下'Value'放入变量中,这可能吗?

[{u'Option': [{u'@viewOrder': u'1', u'@id': u'291277', u'Value': u'Americas'}, {u'@selected': u'true', u'@viewOrder': u'2', u'@id': u'291278', u'Value': u'EMEA'}, {u'@viewOrder': u'3', u'@id': u'291279', u'Value': u'APAC'}, {u'@viewOrder': u'4', u'@id': u'292560', u'Value': u'Middle East'}], u'@required': u'false', u'@editable': u'true', u'@multi-value': u'false', u'@field-type': u'dropdown', u'@data-type': u'option', u'@display-name': u'Region', u'@id': u'127596'}], 


[{u'Option': [{u'@selected': u'true', u'@viewOrder': u'1', u'@id': u'291277', u'Value': u'Americas'}, {u'@viewOrder': u'2', u'@id': u'291278', u'Value': u'EMEA'}, {u'@viewOrder': u'3', u'@id': u'291279', u'Value': u'APAC'}, {u'@viewOrder': u'4', u'@id': u'292560', u'Value': u'Middle East'}], u'@required': u'false', u'@editable': u'true', u'@multi-value': u'false', u'@field-type': u'dropdown', u'@data-type': u'option', u'@display-name': u'Region', u'@id': u'127596'}], 

【问题讨论】:

    标签: python list dictionary data-structures


    【解决方案1】:

    假设这是您的数据:

    data = [[{u'Option': [{u'@viewOrder': u'1', u'@id': u'291277', u'Value': u'Americas'},
                       {u'@selected': u'true', u'@viewOrder': u'2', u'@id': u'291278', u'Value': u'EMEA'},
                       {u'@viewOrder': u'3', u'@id': u'291279', u'Value': u'APAC'}, 
                       {u'@viewOrder': u'4', u'@id': u'292560', u'Value': u'Middle East'}],
           u'@required': u'false', u'@editable': u'true', u'@multi-value': u'false', 
           u'@field-type': u'dropdown', u'@data-type': u'option', u'@display-name': u'Region', u'@id': u'127596'}],
    
    
     [{u'Option': [{u'@selected': u'true', u'@viewOrder': u'1', u'@id': u'291277', u'Value': u'Americas'}, 
                       {u'@viewOrder': u'2', u'@id': u'291278', u'Value': u'EMEA'}, 
                       {u'@viewOrder': u'3', u'@id': u'291279', u'Value': u'APAC'},
                       {u'@viewOrder': u'4', u'@id': u'292560', u'Value': u'Middle East'}], 
           u'@required': u'false', u'@editable': u'true', u'@multi-value': u'false', 
           u'@field-type': u'dropdown', u'@data-type': u'option', u'@display-name': u'Region', u'@id': u'127596'}] 
          ]
    

    一些循环和索引会提取所需的值:

    res = []
    for entry in data:
        for sub_entry in entry[0]['Option']:
            if '@selected' in sub_entry:
                res.append(sub_entry['Value'])
    print(res)
    

    输出:

    ['EMEA', 'Americas']
    

    【讨论】:

    • 工作中,非常感谢! :)