<div>On Fri, Oct 9, 2009 at 10:10 AM, Stephen Hansen <span dir="ltr"><<a href="mailto:apt.shansen@gmail.com">apt.shansen@gmail.com</a>></span> wrote:</div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br><br><div class="gmail_quote"><div><div></div><div class="h5">On Fri, Oct 9, 2009 at 10:02 AM, Victor Subervi <span dir="ltr"><<a href="mailto:victorsubervi@gmail.com" target="_blank">victorsubervi@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi;<br>I have the following code:<br><br> elif table[0] == 't': # This is a store subtype table<br> bits = string.split(table, '0')<br> sst.append(bits[2])<br> sstp.append(bits[1])<br> subtypes = dict(zip(sstp, sst))<br>
<br>When I print these out to screen, I get this:<br><br>sst: ['doctors', 'patient']
<br>
sstp: ['prescriptions', 'prescriptions']
<br>
subtypes: {'prescriptions': 'patient'}
<input name="bst" value="[" type="hidden">
<input name="sst" value="[" type="hidden">
<input name="sstp" value="[" type="hidden">
<br><br>Why do I only get one item from sst and sstp zipped? Why not both??</blockquote></div></div><div>I think you have a logic problem that's not shown in that code sample:</div><div><br></div><div><div class="im">
<div>>>> sst = ['doctors', 'patient']</div>
<div>>>> sstp = ['prescriptions', 'prescriptions']</div></div><div>>>> zip(sst,sstp)</div><div>[('doctors', 'prescriptions'), ('patient', 'prescriptions')]</div>
<div>>>> dict(zip(sst,sstp))</div><div>{'patient': 'prescriptions', 'doctors': 'prescriptions'}</div><div>>>> </div><div><br></div><font color="#888888"><div>--S</div></font></div>
</div>
<br>--<br>
<a href="http://mail.python.org/mailman/listinfo/python-list" target="_blank">http://mail.python.org/mailman/listinfo/python-list</a><br>
<br></blockquote></div><div><br></div><div>The issue is: </div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "> subtypes = dict(zip(sstp, sst))</span></div>
<div><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse; "><br></span></font></div><div><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse; ">If you remove the dict, you'll see the following:</span></font></div>
<div><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse; ">[('prescriptions', 'doctors'), ('prescriptions', 'patient')]</span></font></div>
<div><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse; "><br></span></font></div><div><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse; ">When this is converted to a dict, the first element of each tuple is placed as the dict's key, and the second as the value. This means that you have two keys of prescriptions, and so the final one happens to be chosen as the value.</span></font></div>
<div><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse; "><br></span></font></div><div><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse; "><span class="Apple-style-span" style="font-size: 13px; ">Changing the line: </span></span></font></div>
<div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">subtypes = dict(zip(sstp, sst))</span></div><div><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse; ">to:</span></font></div>
<div><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse; "><span class="Apple-style-span" style="font-size: 13px; ">subtypes = dict(zip(sst, sstp))</span></span></font></div>
<div><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse; ">as I believe Stephen misread it to be causes the zip operation to return:</span></font></div>
<div><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse; ">[('doctors', 'prescriptions'), ('patient', 'prescriptions')]</span></font></div>
<div><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse; ">and thus the dict will contain:</span></font></div><div><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse; ">{'patient': 'prescriptions', 'doctors': 'prescriptions'}</span></font></div>
<div><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse; "><br></span></font></div><div><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse;"><br>
</span></font></div>Chris