我有一个包含字典的列表,如:
data = ['a','b','c',{1:'d',2:'e'}]
。我在csv文件中想要的是['a','b','c','d','e']
。
我可以先将字典项转换为列表,将其替换为列表,然后将修改后的data
写入csv文件。但我需要的是一种方法,可以将data
写入csv文件而不将其更改为data = ['a','b','c','d','e']
。
感谢。
答案 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))