#python
#python
Вопрос:
Список и словарь приведены ниже
main_list = ["projecttype", "emptype", "Designation"]
sample = {
"query": {
"emptype": ["Manager"],
"Designation": ["Developer"],
"from": ["0"],
"q": [""],
"projecttype": ["temp"],
"size": ["4"]
}
}
Как найти, main_list
какие ключи упоминаются в order
словаре. Я использую 3.7
Ожидаемый результат
{"emptype":["Manager"], "Designation":["Developer"], "projecttype":["temp"] }
Комментарии:
1.
{key: items for key, items in sample["query"].items() if key in main_list}
2. @falsetru вероятно, лучше наоборот,
{k:sample['query'][k] for k in main_list if k in sample['query']}
еслиmain_list
он большой, хотя, если он маленький, работает в любом случае3. @juanpa.arrivillaga, OP требует сохранения порядка, в котором они представлены в dict
4. Если он большой, мы можем создать набор, чтобы сократить время тестирования членства:
main_set = set(main_list); {key: items for key, items in sample["query"].items() if key in main_set}
5. @falsetru ах, пропустил это требование, хотя я скептически отношусь к нему как к требованию.
Ответ №1:
Поехали;
main_list = ["projecttype", "emptype", "Designation"]
sample = {
"query": {
"emptype": ["Manager"],
"Designation": ["Developer"],
"from": ["0"],
"q": [""],
"projecttype": ["temp"],
"size": ["4"]
}
}
dc = {}
for key, value in sample["query"].items():
for i in range(len(main_list)):
if key == main_list[i]:
dc[main_list[i]] = value
print(dc)
Комментарии:
1. Но помните, что объекты dict не являются упорядоченными, поэтому порядок может отличаться от порядка списка.
2. Пожалуйста, также оставьте свой голос, если это помогло. Спасибо!