L oop над ключом в словаре - PullRequest
0 голосов
/ 16 марта 2020
item_new_name = []

name = [{'item__product_short_code': 'AAA', 'item_quantity': 20}, {'item__product_short_code': 'BBB', 'item_quantity': 10}, {'item__product_short_code': 'CCC', 'item_quantity': 5}]

Как я могу l oop по этому списку, чтобы я получил следующий результат:

item_new_name = ["AAA1","AAA2",...,"AAA20","BBB1","BBB2",...,"BBB10","CCC1",..."CCC5"]

Что я сделал ":

for i in so_items:
    print("i",i)
    for k,v in i.items():
        print("v",v)
        for k in range(int(v["item_quantity"])):
            print("k",k)

Ошибка:

TypeError: string indices must be integers

1 Ответ

1 голос
/ 16 марта 2020

вы можете использовать понимание списка:

name = [{'item__product_short_code': 'AAA', 'item_quantity': 20}, {'item__product_short_code': 'BBB', 'item_quantity': 10}, {'item__product_short_code': 'CCC', 'item_quantity': 5}]
item_new_name = [e for d in name for e in (d['item__product_short_code'] + str(i) for i in range(1, d['item_quantity'] + 1))]

вывод:

['AAA1',
 'AAA2',
 'AAA3',
 'AAA4',
 'AAA5',
 'AAA6',
 'AAA7',
 'AAA8',
 'AAA9',
 'AAA10',
 'AAA11',
 'AAA12',
 'AAA13',
 'AAA14',
 'AAA15',
 'AAA16',
 'AAA17',
 'AAA18',
 'AAA19',
 'AAA20',
 'BBB1',
 'BBB2',
 'BBB3',
 'BBB4',
 'BBB5',
 'BBB6',
 'BBB7',
 'BBB8',
 'BBB9',
 'BBB10',
 'CCC1',
 'CCC2',
 'CCC3',
 'CCC4',
 'CCC5']
...