Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python数据字典输出_Python_Csv_Import_Data Dictionary - Fatal编程技术网

python数据字典输出

python数据字典输出,python,csv,import,data-dictionary,Python,Csv,Import,Data Dictionary,我道歉了,因为我对python很陌生。我迭代了几个名称,它们都得到了相同的字典键和值。我怎样才能只打印一次密钥,并根据迭代将值添加到csv for name in namelist: print >> out,','.join(data.keys()) print >> out,','.join(data.values()) fundamental_out.close() 输出如下所示 >>'key1,k

我道歉了,因为我对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和Key2是数字

我如何获得这样的输出

   >>'key1,key2,key3'
   >>'value1,value2,value3'
   >>'value1,value2,value3'
还有没有一种方法可以按顺序对数据字典进行排序,以便键3(即名称将是第一列)

谢谢

您可以使用对字典键进行排序:

import re

def natural_sort(l): 
    #https://stackoverflow.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)

谢谢但是,如何用键打印出第一行,用值向前打印出第二行?迭代出一个名称列表,并确保值与具有相应“键变量”的名称相对应?非常感谢!它有助于分类。但仍然在每次迭代中打印出密钥。有没有一种方法可以只打印一次键,并且每次迭代时值都会一直打印?
import re

def natural_sort(l): 
    #https://stackoverflow.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())))