2017-01-22 3 views
0

я в настоящее время имеют следующие наборы данных при условии, от:Python, словарь/Список Searching

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

Предполагая, что это ваши данные:

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'] 
+0

Рабочая, спасибо много! :) –

Смежные вопросы