如何使用python迭代和分配不同变量中的值

2024-09-29 02:16:50 发布

您现在位置:Python中文网/ 问答频道 /正文

作为数据行的输入源

['1111 XXXX XXXX 2345']
['34,000.00 offers jan 2020 grab it,']
['15,089.00']
['2,000.00 7,100.00 12 Jan 2020']
['3,000.26 6,253.36 18 May 2020']
['4,000.19 14,238.00 0.00 444.20 67,079.00']
['02 Jan 20 purchase fuel 1,638.00 C']
['08 Jan 20 purchase flower 1,078.76 M']

我试图将上述循环输入分配给不同的变量,但发现困难

card = 1111 XXXX XXXX 2345,
a = 34,000.00, b = 15,089.00
c = 2,000.00 , d = 7,100.00 , e = 12 Jan 2020
f = 3,000.26, g = 6,253.36, h = 18 May 2020
i = 4,000.19, j = 14,238.00, k = 0.00, l = 444.20, m = 67,079.00
etc.

此外,以下内容的格式相同

['2,000.00 7,100.00 12 Jan 2020']   = c, d, e
['3,000.26 6,253.36 18 May 2020']   = f, g, h

那么,在分配它们时,我是否需要创建一个计数器变量来区分它们? 请建议如何迭代和分配不同的变量

我的尝试如下:

CardNo = namedtuple("CardNo", ["CardNumber"])

# Here data_row getting rows one-by-one as shown in input source.
def fetch_detail(data_row):
    return fetch_no(data_row) or fetch_amount(data_row)

def fetch_no(data_row):
    if 'XXXX' in data_row[0]:
        card_no = data_row[0]
        return CardNo(CardNumber=card_no)
    else:
        return FailedTxn()

def fetch_amount(data_row):
    ...

Tags: noindatareturndeffetchcardpurchase
1条回答
网友
1楼 · 发布于 2024-09-29 02:16:50

您可以执行以下操作:

lst1 = [['2,000.00 7,100.00 12 Jan 2020'],['3,000.26 6,253.36 18 May 2020']]
varLst = ["c","d","e","f","g","h"]
for i in range(len(lst1)):
    globals()[varLst[(3*i)]],globals()[varLst[1+(3*i)]],globals()[varLst[2+(3*i)]] = lst1[i][0].split(" ")[0],lst1[i][0].split(" ")[1]," ".join(lst1[1][0].split(" ")[2:])
print(c,d,e,f,g,h)

代码相同但易于理解:

lst1 = [['2,000.00 7,100.00 12 Jan 2020'],['3,000.26 6,253.36 18 May 2020']]
varLst = ["c","d","e","f","g","h"]
for i in range(len(lst1)):
    globals()[varLst[(3*i)]] = lst1[i][0].split(" ")[0]
    globals()[varLst[1 + (3 * i)]] = lst1[i][0].split(" ")[1]
    globals()[varLst[2 + (3 * i)]] = " ".join(lst1[1][0].split(" ")[2:])
print(c,d,e,f,g,h)

相关问题 更多 >