Доступ к значениям из словаря с использованием списка списков и возвращение списка списков

1

У меня есть словарь под названием dict, который выглядит так:

{1: [0, 1], 2: [2, 3], 3: [4], 4: [5, 6, 7, 8], 5: [9, 10], 7: [11, 12], 8: [13, 14, 15], 9: [16], 10: [17], 11: [18], 13: [19], 14: [20], 15: [21], 17: [22], 18: [23, 24], 19: [25], 21: [26, 27, 28], 22: [29], 24: [30, 31, 32], 25: [33, 34], 27: [35], 28: [36], 31: [37, 38, 39, 40, 41, 42], 32: [43, 44, 45, 46, 47], 34: [48, 49, 50, 51, 52], 35: [53, 54, 55, 56], 36: [57, 58, 59], 37: [60], 40: [61, 62], 41: [63, 64, 65, 66], 43: [67], 44: [68, 69], 45: [70, 71], 48: [72, 73, 74], 49: [75, 76], 51: [77], 52: [78, 79], 53: [80, 81], 54: [82], 55: [83], 58: [84, 85, 86], 59: [87], 61: [88, 89], 62: [90], 63: [91], 64: [92, 93], 65: [94], 68: [95], 69: [96], 71: [97], 73: [98, 99], 74: [100], 76: [101], 77: [102]}

У меня есть список, называемый stillID, который выглядит так:

[[13, 24, 62, 69, 34, 31], [44, 11, 2, 55, 22, 53], [59, 40, 3, 54, 32, 71], [15, 64, 73, 5, 10], [68, 61, 9, 18, 48], [41, 58, 65, 1, 27], [37, 7, 51, 35, 25], [17, 74, 63, 8, 36]]

Остаток содержит список списков, которые являются всеми значениями ключей в словаре. Я хотел бы изменить все значения ключей в остальномID на пару словарных значений ключа. Это означало бы, что вместо списка, имеющего несколько списков ключей в dict, мне нужен список с несколькими списками значений в dict. Однако количество списков в остаткеID не может меняться, но длина каждого списка может быть разной. Как мне это сделать?

Например, рассмотрим первый список в остальномID: [13, 24, 62, 69, 34, 31]

Этот список должен стать: [19, 30, 31, 32, 90, 48, 49, 50, 51, 52, 37, 38, 39, 40, 41, 42]

  • 3
    Можете ли вы поделиться примером O / P, который вы ищете, я вижу слишком много утверждений. Возьмите набор образцов и, пожалуйста, объясните
  • 0
    Неясно. Можете ли вы дать ожидаемый O / P?
Теги:
list
dictionary
python-2.7

2 ответа

2
Лучший ответ

Вы можете использовать следующее понимание списка (предполагая, что ваш словарь называется d так как вы не должны называть его dict поскольку он затеняет встроенный класс):

remainID = [[s for i in l for s in d[i]] for l in remainID]

remainID станет:

[[19, 30, 31, 32, 90, 96, 48, 49, 50, 51, 52, 37, 38, 39, 40, 41, 42], [68, 69, 18, 2, 3, 83, 29, 80, 81], [87, 61, 62, 4, 82, 43, 44, 45, 46, 47, 97], [21, 92, 93, 98, 99, 9, 10, 17], [95, 88, 89, 16, 23, 24, 72, 73, 74], [63, 64, 65, 66, 84, 85, 86, 94, 0, 1, 35], [60, 11, 12, 77, 53, 54, 55, 56, 33, 34], [22, 100, 91, 13, 14, 15, 57, 58, 59]]

0

Вы можете сделать с list comprehension + itertools,

from itertools import chain
remain_id = [list(chain.from_iterable([d.get(j) for j in i])) for i in remain_id]

Результат:

Out[78]: 
[[19, 30, 31, 32, 90, 96, 48, 49, 50, 51, 52, 37, 38, 39, 40, 41, 42],
 [68, 69, 18, 2, 3, 83, 29, 80, 81],
 [87, 61, 62, 4, 82, 43, 44, 45, 46, 47, 97],
 [21, 92, 93, 98, 99, 9, 10, 17],
 [95, 88, 89, 16, 23, 24, 72, 73, 74],
 [63, 64, 65, 66, 84, 85, 86, 94, 0, 1, 35],
 [60, 11, 12, 77, 53, 54, 55, 56, 33, 34],
 [22, 100, 91, 13, 14, 15, 57, 58, 59]]

Ещё вопросы

Сообщество Overcoder
Наверх
Меню