如何在列表Python

时间:2016-06-01 17:22:43

标签: python list

我有

dollar_list = []

with open('fix/dollar.csv', 'r') as f:
    r = csv.DictReader(f)
    for dct in r:
        d = dct['date']
        # Convert '%d/%m/%Y' to '%Y-%m-%d'.
        d = datetime.datetime.strptime(d, '%d/%m/%Y').strftime('%Y-%m-%d')
        dollar_list.append(d, dct['value']) # <- here
    f.close()

错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: append() takes exactly one argument (2 given)

2 个答案:

答案 0 :(得分:2)

我想也许你想要

dollar_list.extend([d, dct['value']]) # <- here
#list looks like [A1,A2,B1,B2,C1,C2,...]

dollar_list.append([d, dct['value']]) # <- here
#list looks like [[1,2],[3,4],..]

答案 1 :(得分:1)

我不认为扩展是正确的方式,因为日期和值的有序对应插入列表中。

提案基于元组来表示有序(日期,值)对:

#! /usr/bin/env python
from __future__ import print_function
import csv
import datetime as dt

dollar_list = []
with open('fix/dollar.csv', 'r') as f:
    for dct in csv.DictReader(f):
        dollar_list.append(
            (dt.datetime.strptime(
                dct['date'],  # Convert '%d/%m/%Y' to '%Y-%m-%d'.
                '%d/%m/%Y').strftime('%Y-%m-%d'),
             dct['value'])
        )

print(dollar_list)

fix/dollar.csv有:

date,value
31/01/2016,2.03
01/02/2016,2.02

然后在脚本上面运行产生:

[('2016-01-31', '2.03'), ('2016-02-01', '2.02')]

注释:我取消了close调用(上下文管理器执行此操作),删除了不需要的局部变量。 ESP。当再次覆盖它们时,它可能会使读者感到困惑,因为在问题表达的日期时间转换步骤中,公式右侧的d可能很容易被忽略。您也可以直接迭代匿名csv.DictReader实例。最后但并非最不重要的是添加了所需的导入以使样本完整。