Извлечение значений из списка, связанного с ключом из одного словаря, для создания другого словаря - PullRequest
0 голосов
/ 01 мая 2020

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

#           ValueList          Key
input_data = [[ 1,     'Col',   1],  
              [ 2,     'Col',   1],   
              [ 3,     'Col',   1],   
              [ 4,     'Col',   1],   
              [ 5,     'Col',   2],
              [ 6,     'Col',   2],  
              [ 7,     'Col',   2],   
              [ 8,     'Col',   2],   
              [ 9,     'Col',   3],
              [10,     'Col',   3],
              [11,     'Col',   3],
              [12,     'Col',   3],
              [13,     'Row',   1],
              [14,     'Row',   1],
              [15,     'Row',   1],
              [16,     'Row',   2],
              [17,     'Row',   2],
              [18,     'Row',   2],
              [19,     'Row',   3],
              [20,     'Row',   3],
              [21,     'Row',   3]] 

common_character = []
father_dict = {}
for i in range(len(input_data)): 
    if input_data[i][1] == 'Col':
        common_character.append(input_data[i][2])
print(common_character)

flat_list = list(set(common_character))
print(flat_list)

for j in flat_list:
    father_dict[j] = []
print(father_dict)

for i in range(len(input_data)):
    if input_data[i][1] == 'Col':
        key = input_data[i][2]
        father_dict[key].append(input_data[i][0])
print(father_dict)    

Оттуда я пытаюсь создать два словаря:

Первый словарь с теми же ключами, но связанный со списком, в котором только первое и последнее значение из списка ' Father_dict 'найдено.

Пример того, что я ищу, напечатано на экране:

{1: [1, 4], 2: [5, 8], 3: [9, 12]}

Аналогично, создайте второй словарь с теми же ключами, но связанными со списком, в котором находятся только значения в середине списка «Father_dict».

Пример того, что я ищу, напечатан на экране:

{1: [2, 3], 2: [6, 7], 3: [10, 11]}

Как этот процесс может быть сделанный? Спасибо.

Извините, мой английский sh, это не мой родной язык.

Ответы [ 2 ]

2 голосов
/ 01 мая 2020

Используя словарь и нарезка , вы можете сделать что-то вроде:

# first and values
result1={
    k:[v[0],v[-1]] for k,v in father_dict.items()
}

# middle values
result2={
    k:[v[1:-1]] for k,v in father_dict.items()
}
1 голос
/ 01 мая 2020

Дикты 2 и 2а:

#{ Key: [ dict[key][value at first position], dict[key][value at last position] ] } #do for each entry in source dict
d2a = {i:[ father_dict[i][0],father_dict[i][-1] ]
       for i in father_dict
       }

#{ Key: dict[key][positions 1 to just before last position] } #for each entry in source dict
d2b = {i: father_dict[i][1:-1]
       for i in father_dict
       }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...