Создать поднабор словарь из другого словаря - PullRequest
0 голосов
/ 11 октября 2018

Вот моя проблема, надеюсь, кто-то может мне помочь. У меня есть то, что я называю глобальным словарем, который в моем сценарии представляет собой словарь всех возможных key:values в моей программе

global_dict = dict(zip(legend_values_global, legend_colors_global))

, а значения выглядят как-товот так

{1: (191, 0, 0), 2: (191, 176, 0), 3: (29, 191, 0), 5: (0, 191, 147), 6: (0, 58, 191), etc

но теперь мне нужно составить словарь только тех значений, которые мне нужны для определенного списка.Поэтому, если X имеет только значения 1 2 и 3, я хочу новый словарь, который выглядит как

{1: (191, 0, 0), 2: (191, 176, 0), 3: (29, 191, 0)}

У меня есть список с именем uniqueBins, который имеетсписок кортежей возможных ключей для каждой итерации

ниже - это то, что я пробовал, но я продолжаю получать Key Error

legend_colors_global = create_colors(len(legend_values_global))
        for bracket in bins:
            uniqueBins.append(tuple(sorted(set(bracket))))

        global_dict = dict(zip(legend_values_global, legend_colors_global))
        for i in range(waferNum):
            this_wafers_legend = {k: global_dict[k] for k in uniqueBins}

Формат uniqueBins выглядит следующим образом:

[(1, 2, 3) ,(5, 10, 11), (1,7,8)]

Ошибка строки this_wafers_legend = {k: global_dict[k] for k in uniqueBins}, но я не знаю почему.Любые предложения будут с благодарностью.

1 Ответ

0 голосов
/ 11 октября 2018

Проблема здесь:

{k: global_dict[k] for k in uniqueBins}

uniqueBins - это [(1, 2, 3), (5, 10, 11), (1, 7, 8)], поэтому k for k in uniqueBins - это целое tuple, которое в итоге становится {(1, 2, 3): global_dict[(1, 2, 3)]}.Вы можете просто создать свой словарь, используя k for k in uniqueBins[0], если ваша цель - ключи 1, 2, 3

uniqueBins = [(1, 2, 3), (5, 6, 2), (1, 3, 6)] # modified for provided data

this_wafers_legends = []
for i in uniqueBins:
    this_wafers_legends.append({k : global_dict[k] for k in i})

print(this_wafers_legends)
# [{1: (191, 0, 0), 2: (191, 176, 0), 3: (29, 191, 0)}, {5: (0, 191, 147), 6: (0, 58, 191), 2: (191, 176, 0)}, {1: (191, 0, 0), 3: (29, 191, 0), 6: (0, 58, 191)}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...