为什么dict设置相同的atfer循环

2024-04-20 06:05:04 发布

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

我是Python的初学者。你知道吗

我正在检索数据并将其保存到dict。当第二次循环时,它将替换我的第一个键值。你知道吗

您可以找到第二个Atfer match_chlDict的输出,键"1"值被键"2"替换。你知道吗

我没有办法自己修,请帮忙。非常感谢。你知道吗

这是原始的匹配细节['chl']

[{'LINENUM': '1', 'LINESTATUS': '0', 'LINEORDER': '1', 'LINE': '9.5', 'H': '100@1.75', 'L': '100@1.95'}, {'LINENUM': '2', 'LINESTATUS': '1', 'LINEORDER': '2', 'LINE': '10.5', 'H': '100@2.20', 'L': '100@1.59'}]

代码

    match_chl={}
    match_chlDict={}
    for chl in match_details['chl']:          
        print("Current match_chlDict") 
        print(match_chlDict)
        match_chl['chlLINE']=chl['LINE']
        match_chl['chlH']=replace100(chl['H'])
        match_chl['chlL']=replace100(chl['L']) 
        #Write match_chl to dict by "LINENUM" as key                   
        match_chlDict[chl['LINENUM']]=match_chl    
        print("Atfer match_chlDict") 
        print(chl['LINENUM'])
        print(match_chlDict)

输出

Curr match_chlDict
{}

自动匹配\u chdict

1
{'1': {'chlLINE': '9.5', 'chlH': '1.75', 'chlL': '1.95'}}

当前匹配\u chlDict

{'1': {'chlLINE': '9.5', 'chlH': '1.75', 'chlL': '1.95'}}

自动匹配\u chdict

2
{'1': {'chlLINE': '10.5', 'chlH': '2.20', 'chlL': '1.59'}, '2': {'chlLINE': '10.5', 'chlH': '2.20', 'chlL': '1.59'}}

Tags: matchlinedictprintlinenumlineorderchllinestatus
2条回答
def replace100(str):
    return(str.replace("100@",""))

for chl in data:
    match_chl = {}
    match_chl['chlLINE'] = chl['LINE']
    match_chl['chlH'] = replace100(chl['H'])
    match_chl['chlL'] = replace100(chl['L'])
    match_chlDict[chl['LINENUM']] = match_chl
match_chlDict

我不知道你在找什么,但是我想如果你想把第一个元素作为键的话,上面的代码是有效的。我想你的错误可能是把值存储在同一个match_chl中。每次循环开始时都应该重置其值。你知道吗

每次在循环中重新初始化match_chl={},否则它将替换字典中的引用。你知道吗

match_chl = {}
match_chlDict = {}
for chl in m:
    print("Current match_chlDict")
    print(match_chlDict)
    match_chl['chlLINE'] = chl['LINE']
    match_chl['chlH'] = 'a'
    match_chl['chlL'] = 'b'
    match_chlDict[chl['LINENUM']] = match_chl
    print("Atfer match_chlDict")
    print(chl['LINENUM'])
    print(match_chlDict)
    match_chl = {}

希望这有帮助!!你知道吗

相关问题 更多 >