GTXY20 wrote:
>
> Thanks again I have worked that issue out.
>
> However I have the following function and it is throwing this error:
>
> FEXpython_v2.py", line 32, in UnitHolderDistributionqty
> count[item]+=1
> KeyError: 3
>
> This is the function:
>
> def Distributionqty(dictionary):
> holder=list()
> held=list()
> distqtydic={}
> for key in sorted(dictionary.keys()):
> holder.append(key)
> held.append(len(dictionary[key]))
> for (key, value) in map(None, holder, held):
> distqtydic[key]=value
Unless you need holder and held for something else, all of the above can
be replaced with
distqtydic = dict( (key, len(value)) for key, value in
sorted(dictionary.items())
> count={}
> for item in distqtydic.values():
> count[item]+=1
The problem is that you are trying to add 1 to a value that is not
defined yet. You can either make
count=defaultdict(int)
or write
count[item] = count.get(item, 0) + 1
If this is the only use of distqtydic then even the shortened code above
is more than you need, you could just write
for item in dictionary.values():
count[len(item)] += 1 # assuming defaultdict
Kent
> for k,v in sorted(count.items()):
> fdist=k
> qty=v
> print fdist,qty
for fdist,qty in sorted(count.items()):
print fdist, qty
No need for the intermediate k, v; just use the names you like.
Kent
_______________________________________________
Tutor maillist - [email protected]
http://mail.python.org/mailman/listinfo/tutor