1

我有一个存储在变量 List_dicts 中的字典项目列表,我必须将上面列表中的选定项目列表写入文件。在我的python函数下面给出:

def write_items(List_dicts,key_list):
  #List_dicts contains the list if dicts
  #key_list contains the key separated by comma
  k_list=key_list.split(',')
  write_string=''
  for i in k_list:
    write_string=write_string+"item['"+i+"'],"
  f=open('log.txt','w')
  for item in List_dicts:
    f.write(write_string[0:len(write_string)-1]) #this should write item['key1'],item['key2'],item['key3']..,item['keyn'] not the value of string 'write_string'
  f.close()

无论如何这可能吗?我的灵感来自 SQL 动态执行查询。

4

3 回答 3

3

编辑:从您的代码来看,您的函数似乎没有编写任何与dicts 的内容相关的内容。您正在write_string[0:len(write_string)-1]为您获得的每个 dict 写入文件(这只是您的副本,write_string没有最后一个尾随逗号)并且write_string与您的 dict 中的项目无关,它只是从key_list.

有一个 python 模块,csv有一个名为 的类DictWriter,适合您的工作。

import csv

def write_dicts(dicts, keys, filename):

   with open(filename, 'w') as csvfile:
       writer = csv.DictWriter(csvfile, keys, extrasaction='ignore')
       for d in dicts:
           writer.writerow(d)
于 2013-04-23T16:48:48.913 回答
0

我不确定我是否理解这个问题,但如果我理解了,这就是你应该使用的: http: //docs.python.org/2/library/pickle.html

基本上,它允许您将 python 对象存储在文件中。这是一个你应该看看的快速示例: http ://wiki.python.org/moin/UsingPickle

于 2013-04-23T16:47:59.703 回答
0

除了更好地使用csv模块之外,你做错的事情是你把事情复杂化了。

您已经有了要编写的键列表,因此只需直接遍历这些键即可:

def write_items(List_dicts, key_list):
    k_list = key_list.split(',')
    with open('log.txt','w') as f:
        for item in List_dicts:
          for key in k_list:
              f.write(item[key])
于 2013-04-23T16:58:03.797 回答