def parse_urls(weeks_urls):
for wkey in weeks_urls.keys():
results=urllib2.urlopen(weeks_urls[wkey])
lines = list(csv.reader(results))
lines=clean_lines(lines)
week_dict=dict.fromkeys(lines[i][1] for i in range(len(lines)))
fare_data=list((lines[i][1:]) for i in range(3,len(lines)))
fare_data=get_fare_data(fare_data)
n=3
for station in week_dict: .....
.......
when I use dict.fromkeys( )
to produce a dict from a list of strings, it automatically sorts them, producing a dict with the strings in alphabetical order. I need to preserve the original order of the string. Is there a way to do this?
grateful for any help here
thanks!
it automatically sorts them, producing a dict with the strings in alphabetical order
This isn't quite correct. Python's standard dict
is unordered, meaning it is permitted to reorder the items as it pleases. You therefore can't rely on the keys appearing in any particular order (nor on the order staying the same across insertions/deletions).
To preserve insertion order, you could use collections.OrderedDict
:
In [6]: l = [1, 2, 20, 5, 10]
In [7]: list(dict.fromkeys(l).keys())
Out[7]: [1, 2, 10, 20, 5]
In [8]: list(collections.OrderedDict.fromkeys(l).keys())
Out[8]: [1, 2, 20, 5, 10]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With