Формирование словаря из списков

305 просмотра
0
0 Комментариев

Имеется два списка.

Первый:

key = ['load.scenarios.attempts', 'load.scenarios.succeeds',
       'load.scenarios.fails', 'load.scenarios.aborts',
       'load.scenarios.attempts_ps', 'load.scenarios.succeeds_ps',
       'load.scenarios.fails_ps', 'load.scenarios.aborts_ps']

Второй:

val = ['Total', 'Per Second']

Нужно создать словарь из них такого вида:

{'load.scenarios.attempts' : 'Total',
  ...,
 'load.scenarios.attempts_ps' : 'Per Second'}
 
 
counters = {}
for k, v in zip(key, val):
    counters[k] = v
print(counters)

Но цикл заканчивается, когда заканчиваются значения v.
Но главная проблема, что бы расставить именно в указанном порядке.

Что бы «Total» относилось только к ‘load.scenarios.attempts’ таким значениям.

А «Per Second» только там, где есть ‘load.scenarios.attempts_ps’ (_ps)


Добавить комментарий

2 Answers

Python Опубликовано 12.12.2018
0

items = [
    'load.scenarios.attempts', 'load.scenarios.succeeds',
    'load.scenarios.fails', 'load.scenarios.aborts',
    'load.scenarios.attempts_ps', 'load.scenarios.succeeds_ps',
    'load.scenarios.fails_ps', 'load.scenarios.aborts_ps'
]
 
 
item_by_value = {x: 'Per Second' if x.endswith('_ps') else 'Total' for x in items}
print(item_by_value)

Результат:

{'load.scenarios.attempts_ps': 'Per Second', 'load.scenarios.fails_ps': 'Per Second', 'load.scenarios.attempts': 'Total', 'load.scenarios.fails': 'Total', 'load.scenarios.succeeds': 'Total', 'load.scenarios.aborts_ps': 'Per Second', 'load.scenarios.aborts': 'Total', 'load.scenarios.succeeds_ps': 'Per Second'}

Добавить комментарий
0

key = ['load.scenarios.attempts', 'load.scenarios.succeeds',
   'load.scenarios.fails', 'load.scenarios.aborts',
   'load.scenarios.attempts_ps', 'load.scenarios.succeeds_ps',
   'load.scenarios.fails_ps', 'load.scenarios.aborts_ps']
 
res = {k: {'_ps': 'Per Second'}.get(k[-3:], 'Total') for k in key}
 
# {'load.scenarios.attempts': 'Total', 'load.scenarios.succeeds': 'Total', 'load.scenarios.fails': 'Total', 'load.scenarios.aborts': 'Total', 'load.scenarios.attempts_ps': 'Per Second', 'load.scenarios.succeeds_ps': 'Per Second', 'load.scenarios.fails_ps': 'Per Second', 'load.scenarios.aborts_ps': 'Per Second'}

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up