You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

尝试向Python嵌套字典添加多个列表,却丢失首个列表条目

问题分析与解决

你的问题出在字典key的唯一性上:在generateScript函数里,你用state作为嵌套字典的外层key,每次循环都会直接给nested_dict[state]赋值。如果两个条目对应的state值相同,后一个条目会直接覆盖前一个,导致第一个条目“丢失”。

验证问题

先确认entryData里的两个条目是否有相同的state值(也就是每行拆分后的第一个元素)。看你代码里的print(parts)输出,检查两行的第一个元素是否一致。如果一致,那就是覆盖问题。

解决方案

根据你的需求选择对应方式:

1. 每个state唯一(修正重复state)

如果每个state应该只对应一组数据,那需要检查输入的条目,确保state不重复,或者在代码里增加重复检查:

for line in myList:
    # 其他代码不变...
    if state in nested_dict:
        print(f"警告:state {state} 已存在,将跳过或覆盖")
        # 这里可以选择跳过:continue,或者保留原数据不覆盖
    nested_dict[state] = {
        'amount': amount,
        'rate': rate,
        'value': value,
        'category': category
    }

2. 同一个state对应多组数据(改为列表存储)

如果需要同一个state下保存多个条目,把外层字典的value改成列表,每次append新的字典:

def generateScript(myList):
    fileName = ent_script_name.get()
    nested_dict = {}

    for line in myList:
        decimal.getcontext().prec = 3
        parts = line.split()
        print(parts)

        state = parts[0]
        amount = int(parts[1])
        rate = decimal.Decimal(parts[2])
        value = decimal.Decimal(parts[3])
        category = parts[4]
        print(f'Getting part 4 {parts[4]}')

        # 改为列表存储多条目
        if state not in nested_dict:
            nested_dict[state] = []
        nested_dict[state].append({
            'amount': amount,
            'rate': rate,
            'value': value,
            'category': category
        })

这样处理后,同一个state下会保存所有对应的条目,不会出现覆盖丢失的情况。

内容的提问来源于stack exchange,提问作者Chewy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 00:00:06