1

我想知道以下是否是python中聚合需要通过多个键在另一个函数中查询的数据的好方法,或者我是否会使用SQLite读取和写入数据有更好的性能。

例如聚合函数的一些伪代码:

import sys

def aggregatesources(sys.argv[1],sys.argv[2],sys.argv[3]):
    source1 = open(sys.argv[1], 'r') #source1.txt
        source1data = source1.read()
    source2 = open(sys.argv[2], 'r') #source2.txt
        source1data = source2.read()
    source3 = open(sys.argv[3], 'r') #source3.txt
        source1data = source3.read()

    aggregated_data = source1 + source2 + source3 # + etc...

这是需要聚合来源的功能,但我的问题是当我将来源提供为:

type1, 32
type2, 9
type3, 12
type4, 21
etc...

有没有办法获取聚合数据并将其关联到更大的字典中,以便:

type1, [source1, 32], [source2,etc...], [etc...]

我想使用 python 的字典查询速度来做到这一点,但如果有其他解决方案可以做同样的事情,请详细说明。

4

1 回答 1

0

这应该可以满足您的需求:

import csv

def add_source_to_dict(mydict, sourcefilename):
  with open(sourcefilename, 'rb') as csvfile:
    my_reader = csv.reader(csvfile)
    for atype, value in my_reader:
      if not atype in mydict:
        mydict[atype]={}
      mydict[atype][sourcefilename] = value
  return mydict

data = {}

data = add_source_to_dict(data, "source1.txt")

交互式:

>>> data = {}
>>> data = add_source_to_dict(data, "source1.txt")
>>> data = add_source_to_dict(data, "source2.txt")
>>> data
{
  'type1,': {
    'source2.txt': '44', 
    'source1.txt': '32'
  }, 
  'type3,': {
    'source2.txt': '46', 
    'source1.txt': '12'
  }, 
  'type2,': {
    'source2.txt': '45', 
    'source1.txt': '9'
  }, 
  'type4,': {
    'source2.txt': '47', 
    'source1.txt': '21'
  }
}
于 2013-03-26T23:56:43.060 回答