Please don't leave new questions in an existing thread, and especially without changing subject line. Compose a new message with meaningful subject line.
ishish <ish...@domhain.de> Wrote in message: > Hi, > > This might sound weird, but is there a limit how many dictionaries a > can create/use in a single script? No, unless you run out of RAM. > > My reason for asking is I split a 2-column-csv (phone#, ref#) file into > a dict and am trying to put duplicated phone numbers with different ref > numbers into new dictionaries. The script deducts the duplicated 46 > numbers but it only creates batch1.csv. Since I obviously can't see the > wood for the trees here, can someone pls punch me into the right > direction.... > ...(No has_key is fine, its python 2.7) But has_key is deprecated, and you're using it wrong anyway. > > f = open("file.csv", 'r') > > myDict = {} > Batch1 = {} > Batch2 = {} > Batch3 = {} > > for line in f: > if line.startswith('Number' ): > print "First line ignored..." > else: > k, v = line.split(',') > myDict[k] = v > f.close() > > for k, v in myDict.items(): > if Batch1.has_key(k): > if k in Batch2.has_key(k): I'm surprised this doesn't throw an exception. has_key returns a bool, and in isn't meaningful on a bool. Just use if k in Batch2: > Batch3[k] = v > else: > Batch2[k] = v > else: > Batch1[k] = v > > for k, v in Batch1.items(): > newLine = "%s,%s" % (k, v) > with open("batch1.csv", "a") as f: This is unusual, and a performance killer, to repeatedly open the file. But you may have some reason. > f.write(newLine) There's no newline there, so your csv is going to be one long line. You probably want newLine+'\n' inside those parens. > > for k, v in Batch2.items(): > newLine = "%s,%s" % (k, v) > with open("batch2.csv", "a") as f: > f.write(newLine) > > for k, v in Batch3.items(): > newLine = "%s,%s" % (k, v) > with open("batch3.csv", "a") as f: > f.write(newLine) > -- DaveA -- https://mail.python.org/mailman/listinfo/python-list