Словарь данных Python
Я извинился, поскольку я очень плохо знаком с питоном. Я перебираю несколько имен, и все они получают одинаковый ключ и значение словаря. Как я могу просто напечатать ключ один раз и продолжать добавлять значение в соответствии с итерацией в CSV?
for name in namelist:
print >> out,','.join(data.keys())
print >> out,','.join(data.values())
fundamental_out.close()
вывод выглядит так
>>'key1,key2,key3'
>>'value1,value2,value3'
>>'key1,key2,key3'
>>'value1,value2,value3'
скажем, key3 это имя, key1 и 2 числовые
как я могу получить вывод, как
>>'key1,key2,key3'
>>'value1,value2,value3'
>>'value1,value2,value3'
Также есть способ сортировки словаря данных в порядке, так что ключ 3 (т.е. имя будет первым столбцом)?
>>'key3,key1,key2'
>>'value3,value1,value2'
>>'value3,value1,value2'
СПАСИБО!
2 ответа
Вы можете использовать естественную сортировку для сортировки словарных ключей:
import re
def natural_sort(l):
#https://stackru.com/a/4836734/846892
convert = lambda text: int(text) if text.isdigit() else text.lower()
alphanum_key = lambda key: [ convert(c) for c in re.split('([0-9]+)', key) ]
return sorted(l, key = alphanum_key)
sorted_keys = ['key3'] + natural_sort(data.viewkeys() - {'key3'})
print >> out, ','.join(keys)
for name in namelist:
print >> out, ','.join(str(data[k]) for k in keys)
from itertools import chain
def arrange(l):
return list(chain([l[-1]], l[:-1]))
print ','.join(arrange(map(lambda x: str(x), namelist.keys())))
print ','.join(arrange(map(lambda x: str(x), namelist.values())))