Python如何将混合列表写入csv文件?

时间:2014-01-02 07:59:23

标签: python list csv dictionary

我有一个包含字典的列表,如: data = ['a','b','c',{1:'d',2:'e'}]。我在csv文件中想要的是['a','b','c','d','e']

我可以先将字典项转换为列表,将其替换为列表,然后将修改后的data写入csv文件。但我需要的是一种方法,可以将data写入csv文件而不将其更改为data = ['a','b','c','d','e']

感谢。

1 个答案:

答案 0 :(得分:1)

鉴于您的列表中有不同的类型,并且您希望以不同的方式处理这些类型,您应该尝试使用isinstance(x, type),请参阅the documentation

data = ['a', 'b', 'c', {1:'d', 2:'e'}]

def flattener(alist):
    flatten = []
    for i in alist:
        if isinstance(i, dict):
            for j in sorted(i): # Sort by keys.
                yield i[j]
        elif isinstance(i,str):
            yield i

flatten = [i for i in flattener(data)]

[OUT]:

['a', 'b', 'c', 'd', 'e']

要获取csv文件的列表,只需:

flatten = ['a', 'b', 'c', 'd', 'e']
with open('out.csv', 'w') as fout:
  fout.write(','.join(flatten))