使用dict.fromkeys()禁用自动dict排序?

use*_*242 5 python dictionary data-analysis

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: .....
.......
Run Code Online (Sandbox Code Playgroud)

当我用来dict.fromkeys( )从字符串列表中生成一个字典时,它会自动对它们进行排序,从而按字母顺序生成一个带字符串的字典.我需要保留字符串的原始顺序.有没有办法做到这一点?

感谢这里的任何帮助

谢谢!

NPE*_*NPE 7

它会自动对它们进行排序,按字母顺序生成一个带字符串的字典

这不太正确.Python的标准dict是无序的,这意味着它可以随意重新排序.因此,您不能依赖于以任何特定顺序出现的密钥(也不能依赖于插入/删除时保持相同的顺序).

要保留广告订单,您可以使用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]
Run Code Online (Sandbox Code Playgroud)