使用循环和条件时如何从列表中获取唯一值

时间:2019-04-21 12:11:28

标签: python tkinter

我想创建一个表,其中“项目代码”是主行,“查伦编号”是子行。对于每个项目,项目代码仅是一个,而Challan号仅是一个。但是相同的Challan号可用于不同的物料代码。

item_table = [('I-101', 'Wall Tiles'), ('I-102', 'Floor Tiles'), ('I-103', 'Wall Tiles')]
in_table = [('I-101', 'C-1415', 100.0), ('I-102', 'C-1469', 110.0), ('I-103', 'C-1455', 120.0), ('I-101', 'C-1897', 130.0), ('I-101', 'C-1415', 140.0), ('I-102', 'C-1415', 150.0), ('I-103', 'C-1897', 160.0)]
out_table = [('I-101', 'C-1415', -100.0), ('I-103', 'C-1455', -500.0)]
for elem in item_table:
    print(elem[0])
    for bill in in_table:
        if elem[0] == bill[0]:
            print(bill[1])

这是我的问题

This is my problem

这是我的主要设计

this is my main design

1 个答案:

答案 0 :(得分:0)

制作一组已打印的所有查拉数字,以免重复打印。

item_table = [('I-101', 'Wall Tiles'), ('I-102', 'Floor Tiles'), ('I-103', 'Wall Tiles')]
in_table = [('I-101', 'C-1415', 100.0), ('I-102', 'C-1469', 110.0), ('I-103', 'C-1455', 120.0), ('I-101', 'C-1897', 130.0), ('I-101', 'C-1415', 140.0), ('I-102', 'C-1415', 150.0), ('I-103', 'C-1897', 160.0)]
out_table = [('I-101', 'C-1415', -100.0), ('I-103', 'C-1455', -500.0)]
for elem in item_table:
    printed = set()
    print(elem[0])
    for bill in in_table:
        if elem[0] == bill[0] and bill[1] not in printed:
            print(bill[1])
            printed.add(bill[1])

DEMO