Python 更改词汇表中的值

Python 更改词汇表中的值,python,python-3.x,list,dictionary,Python,Python 3.x,List,Dictionary,我有大量的字典列表,我必须在列表中的每一本字典中更改键中的日期格式 我编写了这样的代码,但不起作用: dict_list = [ {'<TICKER>': 'HDR', '<DATE>': '19980317', '<CLOSE>': '11.633', '<VOL>': '67931'}, {'<TICKER>': 'HDR', '<DATE>': '19980318', '<CLOSE>':

我有大量的字典列表,我必须在列表中的每一本字典中更改键
中的日期格式

我编写了这样的代码,但不起作用:

dict_list = [
    {'<TICKER>': 'HDR', '<DATE>': '19980317', '<CLOSE>': '11.633', '<VOL>': '67931'},
    {'<TICKER>': 'HDR', '<DATE>': '19980318', '<CLOSE>': '10.481', '<VOL>': '115169'},
    {'<TICKER>': 'HDR', '<DATE>': '19980319', '<CLOSE>': '10.131', '<VOL>': '75305'},
    {'<TICKER>': 'HDR', '<DATE>': '19980320', '<CLOSE>': '10.481', '<VOL>': '53504'},
    {'<TICKER>': 'HDR', '<DATE>': '19980323', '<CLOSE>': '10.379', '<VOL>': '27581'},
    {'<TICKER>': 'HDR', '<DATE>': '19980324', '<CLOSE>': '10.228', '<VOL>': '37328'},
    {'<TICKER>': 'HDR', '<DATE>': '19980325', '<CLOSE>': '10.131', '<VOL>': '28739'},
    {'<TICKER>': 'HDR', '<DATE>': '19980326', '<CLOSE>': '10.131', '<VOL>': '45352'},
    {'<TICKER>': 'HDR', '<DATE>': '19980327', '<CLOSE>': '10.027', '<VOL>': '42585'},
    {'<TICKER>': 'HDR', '<DATE>': '19980330', '<CLOSE>': '10.027', '<VOL>': '21260'}
]
    
for dictionary in dict_list:
    for date in dictionary:
        date = dictionary["<DATE>"]
        year = date[:4]
        month = date[4:6]
        day = date[6:]
        date = f"{year}-{month}-{day}"

print(dict_list)
dict\u列表=[
{'':'HDR','''19980317','''11.633','''67931'},
{'':'HDR','''19980318','''10.481','''115169'},
{'':'HDR','''19980319','''10.131','''75305'},
{'':'HDR','''19980320','''10.481','''53504'},
{'':'HDR','''19980323','''10.379','''27581'},
{'':'HDR','''19980324','''10.228','''37328'},
{'':'HDR','''19980325','''10.131','''28739'},
{'':'HDR','''19980326','''10.131','''45352'},
{'':'HDR','''19980327','''10.027','''42585'},
{'':'HDR','''19980330','''10.027','''21260'}
]
对于dict_列表中的词典:
对于字典中的日期:
日期=字典[“”]
年份=日期[:4]
月=日期[4:6]
日期=日期[6:]
日期=f“{year}-{month}-{day}”
打印(目录列表)
我想补充:

dictionary.update({“”:date})

但产出看起来并不好。应该是:

{…'':'1998-03-17'.}

是:

{.'':'1998----0-3-17'.}


我不知道如何修理它。请提供帮助。

为什么需要再次循环查看
词典

这一行:

    for date in dictionary:
该通道迭代字典的键。因此,内的逻辑会重复地获取
字段的前四位数字,并对其进行切片,如下所示:

19980330        ==> 1998|03|30
1998-03-30      ==> 1998|-0|3-30
1998--0-3-30    ==> 1998|--|0-3-30
1998----0-3-30
  • 移除第二个循环
  • 另外,在那里调用
    .update()
    有什么意义?直接分配,就像这样:
    字典[“”]=日期

  • 您的第二个循环有问题,这使您的字典更新了4次。以下是我的解决方案:

    dict_list = [{'<TICKER>': 'HDR', '<DATE>': '19980317', '<CLOSE>': '11.633', '<VOL>': '67931'}, {'<TICKER>': 'HDR', '<DATE>': '19980318', '<CLOSE>': '10.481', '<VOL>': '115169'}, {'<TICKER>': 'HDR', '<DATE>': '19980319', '<CLOSE>': '10.131', '<VOL>': '75305'}, {'<TICKER>': 'HDR', '<DATE>': '19980320', '<CLOSE>': '10.481', '<VOL>': '53504'}, {'<TICKER>': 'HDR', '<DATE>': '19980323', '<CLOSE>': '10.379', '<VOL>': '27581'}, {'<TICKER>': 'HDR', '<DATE>': '19980324', '<CLOSE>': '10.228', '<VOL>': '37328'}, {'<TICKER>': 'HDR', '<DATE>': '19980325', '<CLOSE>': '10.131', '<VOL>': '28739'}, {'<TICKER>': 'HDR', '<DATE>': '19980326', '<CLOSE>': '10.131', '<VOL>': '45352'}, {'<TICKER>': 'HDR', '<DATE>': '19980327', '<CLOSE>': '10.027', '<VOL>': '42585'}, {'<TICKER>': 'HDR', '<DATE>': '19980330', '<CLOSE>': '10.027', '<VOL>': '21260'}]
         
    for dictionary in dict_list:
        date = dictionary["<DATE>"]
        year = date[:4]
        month = date[4:6]
        day = date[6:]
        date = f"{year}-{month}-{day}"
    
    dict_list=[{':'HDR','19980317','11.633','67931'},{':'HDR','19980318','10.481','115169'},{':'HDR','19980319','10.131','75305','HDR','19980320','10.481','53504','115169,'19980319',',{'':'HDR','''19980324','''10.228','37328'},{'':'HDR','19980325','10.131','28739'},{'':'HDR','19980326','10.131','45352'},{'':'HDR','19980327','42585'},{'':'HDR','19980330','10.027','21260']
    对于dict_列表中的词典:
    日期=字典[“”]
    年份=日期[:4]
    月=日期[4:6]
    日期=日期[6:]
    日期=f“{year}-{month}-{day}”
    
    Ohh,您必须设置一个条件来检查
    键。只有添加此项才能获得预期的输出

    您的输入列表

    dict_list = [{'<TICKER>': 'HDR', '<DATE>': '19980317', '<CLOSE>': '11.633', '<VOL>': '67931'}, {'<TICKER>': 'HDR', '<DATE>': '19980318', '<CLOSE>': '10.481', '<VOL>': '115169'}, {'<TICKER>': 'HDR', '<DATE>': '19980319', '<CLOSE>': '10.131', '<VOL>': '75305'}, {'<TICKER>': 'HDR', '<DATE>': '19980320', '<CLOSE>': '10.481', '<VOL>': '53504'}, {'<TICKER>': 'HDR', '<DATE>': '19980323', '<CLOSE>': '10.379', '<VOL>': '27581'}, {'<TICKER>': 'HDR', '<DATE>': '19980324', '<CLOSE>': '10.228', '<VOL>': '37328'}, {'<TICKER>': 'HDR', '<DATE>': '19980325', '<CLOSE>': '10.131', '<VOL>': '28739'}, {'<TICKER>': 'HDR', '<DATE>': '19980326', '<CLOSE>': '10.131', '<VOL>': '45352'}, {'<TICKER>': 'HDR', '<DATE>': '19980327', '<CLOSE>': '10.027', '<VOL>': '42585'}, {'<TICKER>': 'HDR', '<DATE>': '19980330', '<CLOSE>': '10.027', '<VOL>': '21260'}]
    
    [{'<TICKER>': 'HDR', '<DATE>': '1998-03-17', '<CLOSE>': '11.633', '<VOL>': '67931'}, {'<TICKER>': 'HDR', '<DATE>': '1998-03-18', '<CLOSE>': '10.481', '<VOL>': '115169'}, {'<TICKER>': 'HDR', '<DATE>': '1998-03-19', '<CLOSE>': '10.131', '<VOL>': '75305'}, {'<TICKER>': 'HDR', '<DATE>': '1998-03-20', '<CLOSE>': '10.481', '<VOL>': '53504'}, {'<TICKER>': 'HDR', '<DATE>': '1998-03-23', '<CLOSE>': '10.379', '<VOL>': '27581'}, {'<TICKER>': 'HDR', '<DATE>': '1998-03-24', '<CLOSE>': '10.228', '<VOL>': '37328'}, {'<TICKER>': 'HDR', '<DATE>': '1998-03-25', '<CLOSE>': '10.131', '<VOL>': '28739'}, {'<TICKER>': 'HDR', '<DATE>': '1998-03-26', '<CLOSE>': '10.131', '<VOL>': '45352'}, {'<TICKER>': 'HDR', '<DATE>': '1998-03-27', '<CLOSE>': '10.027', '<VOL>': '42585'}, {'<TICKER>': 'HDR', '<DATE>': '1998-03-30', '<CLOSE>': '10.027', '<VOL>': '21260'}]
    
    dict_list=[{':'HDR','19980317','11.633','67931'},{':'HDR','19980318','10.481','115169'},{':'HDR','19980319','10.131','75305','HDR','19980320','10.481','53504','115169,'19980319',',{'':'HDR','''19980324','''10.228','37328'},{'':'HDR','19980325','10.131','28739'},{'':'HDR','19980326','10.131','45352'},{'':'HDR','19980327','42585'},{'':'HDR','19980330','10.027','21260']
    
    修改代码

    for dictionary in dict_list:
        for key in dictionary:
            if key == "<DATE>" :
                date = dictionary[key]
                year = date[:4]
                month = date[4:6]
                day = date[6:]
                date = f"{year}-{month}-{day}"
                dictionary[key] = date
            else:
                pass
    
    print(dict_list)
    
    字典目录列表中的字典的
    :
    对于输入字典:
    如果键==“”:
    日期=字典[键]
    年份=日期[:4]
    月=日期[4:6]
    日期=日期[6:]
    日期=f“{year}-{month}-{day}”
    字典[键]=日期
    其他:
    通过
    打印(目录列表)
    
    您的预期产出

    dict_list = [{'<TICKER>': 'HDR', '<DATE>': '19980317', '<CLOSE>': '11.633', '<VOL>': '67931'}, {'<TICKER>': 'HDR', '<DATE>': '19980318', '<CLOSE>': '10.481', '<VOL>': '115169'}, {'<TICKER>': 'HDR', '<DATE>': '19980319', '<CLOSE>': '10.131', '<VOL>': '75305'}, {'<TICKER>': 'HDR', '<DATE>': '19980320', '<CLOSE>': '10.481', '<VOL>': '53504'}, {'<TICKER>': 'HDR', '<DATE>': '19980323', '<CLOSE>': '10.379', '<VOL>': '27581'}, {'<TICKER>': 'HDR', '<DATE>': '19980324', '<CLOSE>': '10.228', '<VOL>': '37328'}, {'<TICKER>': 'HDR', '<DATE>': '19980325', '<CLOSE>': '10.131', '<VOL>': '28739'}, {'<TICKER>': 'HDR', '<DATE>': '19980326', '<CLOSE>': '10.131', '<VOL>': '45352'}, {'<TICKER>': 'HDR', '<DATE>': '19980327', '<CLOSE>': '10.027', '<VOL>': '42585'}, {'<TICKER>': 'HDR', '<DATE>': '19980330', '<CLOSE>': '10.027', '<VOL>': '21260'}]
    
    [{'<TICKER>': 'HDR', '<DATE>': '1998-03-17', '<CLOSE>': '11.633', '<VOL>': '67931'}, {'<TICKER>': 'HDR', '<DATE>': '1998-03-18', '<CLOSE>': '10.481', '<VOL>': '115169'}, {'<TICKER>': 'HDR', '<DATE>': '1998-03-19', '<CLOSE>': '10.131', '<VOL>': '75305'}, {'<TICKER>': 'HDR', '<DATE>': '1998-03-20', '<CLOSE>': '10.481', '<VOL>': '53504'}, {'<TICKER>': 'HDR', '<DATE>': '1998-03-23', '<CLOSE>': '10.379', '<VOL>': '27581'}, {'<TICKER>': 'HDR', '<DATE>': '1998-03-24', '<CLOSE>': '10.228', '<VOL>': '37328'}, {'<TICKER>': 'HDR', '<DATE>': '1998-03-25', '<CLOSE>': '10.131', '<VOL>': '28739'}, {'<TICKER>': 'HDR', '<DATE>': '1998-03-26', '<CLOSE>': '10.131', '<VOL>': '45352'}, {'<TICKER>': 'HDR', '<DATE>': '1998-03-27', '<CLOSE>': '10.027', '<VOL>': '42585'}, {'<TICKER>': 'HDR', '<DATE>': '1998-03-30', '<CLOSE>': '10.027', '<VOL>': '21260'}]
    
    ,{'':'HDR','''1998-03-24','''10.228','''37328'},{'':'HDR','''1998-03-25','''10.131','''28739'},{'':'HDR','''1998-03-26','''10.131','''45352'},{'':'HDR','''1998-03-27','','','''10.027','','','','''42585','',''''''HDR','','',''1998-03-30''10.027','21260']
    
    问题在于不必要的内部循环:

    dict_list = [
        {'<TICKER>': 'HDR', '<DATE>': '19980317', '<CLOSE>': '11.633', '<VOL>': '67931'},
        {'<TICKER>': 'HDR', '<DATE>': '19980318', '<CLOSE>': '10.481', '<VOL>': '115169'},
        {'<TICKER>': 'HDR', '<DATE>': '19980319', '<CLOSE>': '10.131', '<VOL>': '75305'},
        {'<TICKER>': 'HDR', '<DATE>': '19980320', '<CLOSE>': '10.481', '<VOL>': '53504'},
        {'<TICKER>': 'HDR', '<DATE>': '19980323', '<CLOSE>': '10.379', '<VOL>': '27581'},
        {'<TICKER>': 'HDR', '<DATE>': '19980324', '<CLOSE>': '10.228', '<VOL>': '37328'},
        {'<TICKER>': 'HDR', '<DATE>': '19980325', '<CLOSE>': '10.131', '<VOL>': '28739'},
        {'<TICKER>': 'HDR', '<DATE>': '19980326', '<CLOSE>': '10.131', '<VOL>': '45352'},
        {'<TICKER>': 'HDR', '<DATE>': '19980327', '<CLOSE>': '10.027', '<VOL>': '42585'},
        {'<TICKER>': 'HDR', '<DATE>': '19980330', '<CLOSE>': '10.027', '<VOL>': '21260'}
    ]
    
    for dictionary in dict_list:
        date = dictionary["<DATE>"]
        year = date[:4]
        month = date[4:6]
        day = date[6:]
        date = year + '-' + month + '-' + day
        dictionary["<DATE>"] = date
    
    print(dict_list)
    
    dict\u列表=[
    {'':'HDR','''19980317','''11.633','''67931'},
    {'':'HDR','''19980318','''10.481','''115169'},
    {'':'HDR','''19980319','''10.131','''75305'},
    {'':'HDR','''19980320','''10.481','''53504'},
    {'':'HDR','''19980323','''10.379','''27581'},
    {'':'HDR','''19980324','''10.228','''37328'},
    {'':'HDR','''19980325','''10.131','''28739'},
    {'':'HDR','''19980326','''10.131','''45352'},
    {'':'HDR','''19980327','''10.027','''42585'},
    {'':'HDR','''19980330','''10.027','''21260'}
    ]
    对于dict_列表中的词典:
    日期=字典[“”]
    年份=日期[:4]
    月=日期[4:6]
    日期=日期[6:]
    日期=年+月+日
    字典[“”]=日期
    打印(目录列表)
    
    字典目录列表中的字典:
    日期=字典[“”]
    年份=日期[:4]
    月=日期[4:6]
    日期=日期[6:]
    日期=f“{year}-{month}-{day}”
    字典[“”]=日期
    

    您应该在字典中设置值,因为“date”是一种值类型,所以在迭代时,它会复制到“date”变量中,因此更改不会应用到映射中的值(如果它是引用类型的话会发生)

    您可以发布整个脚本吗?
    f“{date[:4]}-{date[4:6]}-{date[6:}”
    确实有效……在任何情况下,您都应该将日期字符串解析为
    datetime
    对象并从中输出。“值类型”和“引用类型”不是Python中的概念