Словарь и список с кортежами манипуляций с питоном - PullRequest
0 голосов
/ 07 октября 2019

У меня есть один список с некоторыми данными в кортежах:
[('a',12), ('b',6), ('c',9), ('d',15), ('e',4)]

После некоторых манипуляций с данными создается словарь {1: ['b','d'], 2: ['a','c','e']}. Как я мог манипулировать этим словарем и начальным списком, чтобы получить список с целыми числами этих букв? Как [[6,15],[12,9,4]].

items = [('a',12), ('b',6), ('c',9), ('d',15), ('e',4)]
bins = {1: ['b','d'], 2: ['a','c','e']}
tempList = []
tList = []
for b in bins.keys():
    for i in range(len(bins[b])):
        if bins[b][i] == items[i][0]:
            tList.append(items[i][1])
    tempList.append(tList)

Вывод:

[[12],[12]]

Спасибо.

1 Ответ

1 голос
/ 07 октября 2019

Вы можете создать dict из list из tuples и сделать что-то вроде

>>> a = [('a',12), ('b',6), ('c',9), ('d',15), ('e',4)]
>>> b = {1: ['b','d'], 2: ['a','c','e']}
>>> d = {k:v for k,v in a}
>>> [[d.get(y) for y in x] for x in b.values()]
[[6, 15], [12, 9, 4]]

Для лучшего понимания:

>>> d = {k:v for k,v in a} # create a dictionary with `char: value` from list of tuples for convenience :)
>>> l = [] # create a main list
>>> for values in b.values(): # we only need the values
...   il = [] # a temporary inner list to keep values
...   for value in values:
...     val = d[value] # get the corresponding value of the character we kept in the dictionary
...     il.append(val) # append the value to the inner list
...   l.append(il) # append the inner list to main list
... 
>>> l
[[6, 15], [12, 9, 4]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...