Python,字典/列表搜索

时间:2017-01-22 11:24:46

标签: python list dictionary data-structures

我目前提供以下数据集:

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'}], 

1 个答案:

答案 0 :(得分: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']