Dictionaries

I

ishish

Hi,

This might sound weird, but is there a limit how many dictionaries a
can create/use in a single script?

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)

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):
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:
f.write(newLine)

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)
 
J

John Gordon

In said:
The script [...] only creates batch1.csv.

If the script only creates batch1.csv, that means Batch2 and Batch3 must
be empty.
for k, v in myDict.items():
if Batch1.has_key(k):
if k in Batch2.has_key(k):
Batch3[k] = v
else:
Batch2[k] = v
else:
Batch1[k] = v

'if k in Batch2.has_key(k):' is a very strange line of code. In fact, it
should produce a syntax error if it were ever executed, because the 'in'
keyword requires an iterable as the second part, and has_key() returns
only True or False.

Therefore, I would say that line of code never executes, which means
that the preceding 'if Batch1.has_key(k)' statement always evaluates
to False.

Which therefore means that Batch2 and Batch3 never accumulate any items,
matching your observed output.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,483
Members
44,902
Latest member
Elena68X5

Latest Threads

Top