Получение значения Передача ключа из списка списков - PullRequest
0 голосов
/ 28 января 2020

Мне дан список списков, похожий на следующий. Я очень плохо знаком с Python

[
{'id': 1244}, 
{'name': 'example.com'}, 
{'monitoring_enabled': 'Yes'}, 
{'monitoring_url': 'http://www.example.com/'}, 
{'monitoring_page_url': 'http://www.example.com/products-spool-chain-overview.htm'}, 
{'monitoring_text_string': 'quality product'}, 
]
[
{'id': 1245}, 
{'name': 'example.com'}, 
{'monitoring_enabled': 'Yes'}, 
{'monitoring_url': 'http://www.example.com/'}, 
{'monitoring_page_url': 'http://www.example.com/products-spool-chain-overview.htm'}, 
{'monitoring_text_string': 'quality product'}, 
]
[
{'id': 1246}, 
{'name': 'example.com'}, 
{'monitoring_enabled': 'Yes'}, 
{'monitoring_url': 'http://www.example.com/'}, 
{'monitoring_page_url': 'http://www.example.com/products-spool-chain-overview.htm'}, 
{'monitoring_text_string': 'quality product'}, 
]

Как я могу получить из этого значения "имя", не вкладывая циклы?

Мой текущий код:

for _row in _rs:
    print(_row)
    print(_row["name])

Однако я получаю сообщение об ошибке: TypeError: list indices must be integers, not str

Итак, как я могу выполнить sh это?

Ответы [ 3 ]

2 голосов
/ 28 января 2020

если это список, то между каждым списком стоит запятая. тогда вы можете легко сделать это:

for i in x:
    print(i[1]['name'])
1 голос
/ 28 января 2020

Как это выглядит?

l = [{'id': 1244}, {'name': 'example.com'}, ...]
names = e['name'] for e in l if 'name' in e]

print(names)
>>> ['example.com']
0 голосов
/ 28 января 2020

Вы можете перемещаться по списку и проверять, есть ли в каждом словаре клавиша «имя», и печатать результат, если да.

list1 = [{'id': 1244}, 
         {'name': 'example.com'}, 
         {'monitoring_enabled': 'Yes'}, 
         {'monitoring_url': 'http://www.example.com/'}, 
         {'monitoring_page_url': 'http://www.example.com/products-spool-chain-overview.htm'}, 
         {'monitoring_text_string': 'quality product'}]

for dictionary in list1:
    if "name" in dictionary.keys(): # Whether the dictionary looks like {"name": ...}
        print(dictionary["name"])
        break # Exit the loop now that we have the name, instead of going through the whole list.

Редактировать: Ваш ввод неверен. Прежде чем начать работать с ним, вы хотите изменить функцию, которая дает вам то, что вы показали в ОП, на:

[ # <-- outer list starts
 [
 {'id': 1244}, 
 {'name': 'example.com'}, 
 {'monitoring_enabled': 'Yes'}, 
 {'monitoring_url': 'http://www.example.com/'}, 
 {'monitoring_page_url': 'http://www.example.com/products-spool-chain- overview.htm'}, 
 {'monitoring_text_string': 'quality product'}, 
 ], # <--
 [
  {'id': 1245}, 
  {'name': 'example.com'}, 
  {'monitoring_enabled': 'Yes'}, 
  {'monitoring_url': 'http://www.example.com/'}, 
  {'monitoring_page_url': 'http://www.example.com/products-spool-chain-overview.htm'}, 
  {'monitoring_text_string': 'quality product'}, 
 ], # <--
 [
  {'id': 1246}, 
  {'name': 'example.com'}, 
  {'monitoring_enabled': 'Yes'}, 
  {'monitoring_url': 'http://www.example.com/'}, 
  {'monitoring_page_url': 'http://www.example.com/products-spool-chain-overview.htm'}, 
  {'monitoring_text_string': 'quality product'}, 
 ]
] # <-- outer list ends

Еще лучше:

lists_of_dicts = [
                  [{'id': 1244, 
                    'name': 'example.com', 
                    'monitoring_enabled': 'Yes', 
                    'monitoring_url': 'http://www.example.com/', 
                    'monitoring_page_url': 'http://www.example.com/products-spool-chain- overview.htm', 
                    'monitoring_text_string': 'quality product'}],

                  [{'id': 1245, 
                    'name': 'example.com', 
                    'monitoring_enabled': 'Yes', 
                    'monitoring_url': 'http://www.example.com/', 
                    'monitoring_page_url': 'http://www.example.com/products-spool-chain- overview.htm', 
                    'monitoring_text_string': 'quality product'}],

                  [{'id': 1246, 
                    'name': 'example.com', 
                    'monitoring_enabled': 'Yes', 
                    'monitoring_url': 'http://www.example.com/', 
                    'monitoring_page_url': 'http://www.example.com/products-spool-chain- overview.htm', 
                    'monitoring_text_string': 'quality product'}]
                 ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...