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中的概念