【问题标题】:Is there a way to maintain the order of dictionary values?有没有办法保持字典值的顺序?
【发布时间】:2021-06-23 17:47:50
【问题描述】:

以下是我从元组列表中查找不同站点和不同名称的代码:

from collections import defaultdict,OrderedDict
weblogs = [
     ('Nanda', 'google.com'), ('Maha', 'google.com'), 
     ('Fei', 'python.org'), ('Maha', 'google.com'), 
     ('Fei', 'python.org'), ('Nanda', 'python.org'), 
     ('Fei', 'dzone.com'), ('Nanda', 'google.com'), 
     ('Maha', 'google.com'), ]
web = [t for t in (set(tuple(i) for i in weblogs))]
res = defaultdict(list)
for i, j in web:
    res[j].append(i)

a = OrderedDict()
a = dict(res)
for i,j in sorted(a.items()):
    print(i,j)

此输出在以下两个输出之间不断变化:

dzone.com ['Fei']
google.com ['Maha', 'Nanda']
python.org ['Nanda', 'Fei']

dzone.com ['Fei']
google.com ['Nanda', 'Maha']
python.org ['Fei', 'Nanda']

有没有办法保持值的恒定顺序?

【问题讨论】:

    标签: python-3.x dictionary collections tuples ordereddictionary


    【解决方案1】:

    问题来自集合中值的顺序。一个简单的解决方案是更改该行:

    web = [t for t in (set(tuple(i) for i in weblogs))]
    

    像这样:

    web = [t for t in (sorted(set(tuple(i) for i in weblogs)))]
    

    【讨论】: