我有一个for循环,该循环运行CSV文件并捕获某些元素,并基于两个变量创建字典。
代码:
for ind, row in sf1.iterrows():
sf1_date = row['datekey']
sf1_ticker = row['ticker']
company_date[sf1_ticker] = [sf1_date]
例如,在for循环的第一次迭代中,sf1_ticker = 'AAPL'
以及sf1_date = '2020/03/01'
在下次遍历sf1_ticker = 'AAPL'
and的过程中sf1_date = '2020/06/01'
,如何使字典中“ AAPL”的键等于['2020/03/01', '2020/06/01']
看来,当您说“关键”时,您实际上是在说“价值”。字典的键是用于在字典中查找值的东西。在您的情况下,代码是键,日期列表是值,例如,您想要一个像这样的字典:
{'AAPL': ['2020/03/01', '2020/06/01'].
'MSFT': ['2020/04/01', '2020/09/01']}
在这里,字符串AAPL和MSFT是字典键。日期列表是与每个键关联的值。
您的代码无法构造这样的字典,因为它正在为键分配新的值。以下代码将在字典company_date
中尚不存在该密钥的情况下在字典中创建一个新密钥,或者在该密钥已存在的情况下替换现有值:
company_date[sf1_ticker] = [sf1_date]
您需要在字典中追加一个值列表,而不是替换当前列表(如果有)。有两种方法可以做到这一点。dict.setdefault()
是一个:
company_date = {}
for ind, row in sf1.iterrows():
sf1_date = row['datekey']
sf1_ticker = row['ticker']
company_date.setdefault(sf1_ticker, []).append(sf1_date)
另一种方法是使用collections.defaultdict
list:
from collections import defaultdict
company_date = defaultdict(list)
for ind, row in sf1.iterrows():
sf1_date = row['datekey']
sf1_ticker = row['ticker']
company_date[sf1_ticker].append(sf1_date)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句