Форум сайта python.su
0
Есть такой список:
[(1, 11, u'a', u'w'), (1, 24, u'пd', u'fпр'), (1, 44, u'dы', u'fав'), (2, 66, u'аd', u'f'), (2, 24, u'd', u'f' ), (4, 5, u'd', u'sd')]
l2 = [12, 48, 99]
[(12, 11, u'a', u'w'), (12, 24, u'пd', u'fпр'), (12, 44, u'dы', u'fав'), (48, 66, u'аd', u'f'), (48, 24, u'd', u'f' ), (99, 5, u'd', u'sd')]
Офлайн
Зачем вы храните значения в кортежах, если вы хотите именять содержимое? Для этого есть списки.
Офлайн
0
Да верно, не правильно описал задание.
Это образец, цель трансформация простого текстового файла, и может быть представлен в любом виде, в том числе в словарях
Отредактировано info.rss (Ноя. 10, 2014 14:45:45)
Офлайн
Вобщем, конкретно по вашему вопросу
lst = [(1, 11, u'a', u'w'), (1, 24, u'пd', u'fпр'), (1, 44, u'dы', u'fав'), (2, 66, u'аd', u'f'), (2, 24, u'd', u'f' ), (4, 5, u'd', u'sd')] dict_replace = {1: 12, 2: 48, 4: 99} lst_new = [(dict_replace[i[0]],) + i[1:] for i in lst]
Офлайн
47
l1 = [(1, 11, u'a', u'w'), (1, 24, u'пd', u'fпр'), (1, 44, u'dы', u'fав'), (2, 66, u'аd', u'f'), (2, 24, u'd', u'f'), (4, 5, u'd', u'sd')] l2 = [12, 48, 99] test_res = [(12, 11, u'a', u'w'), (12, 24, u'пd', u'fпр'), (12, 44, u'dы', u'fав'), (48, 66, u'аd', u'f'), (48, 24, u'd', u'f'), (99, 5, u'd', u'sd')] from itertools import groupby from operator import itemgetter def genych(lst, seeds): seeds.reverse() for _, group in groupby(lst, itemgetter(0)): seed = seeds.pop() for item in group: yield tuple([seed] + list(item[1:])) res = list(genych(l1, l2)) assert res == test_res
Офлайн