Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 有没有办法维持字典值的顺序?_Python 3.x_Dictionary_Collections_Tuples_Ordereddictionary - Fatal编程技术网

Python 3.x 有没有办法维持字典值的顺序?

Python 3.x 有没有办法维持字典值的顺序?,python-3.x,dictionary,collections,tuples,ordereddictionary,Python 3.x,Dictionary,Collections,Tuples,Ordereddictionary,下面是我从元组列表中查找不同站点和不同名称的代码: from collections import defaultdict,OrderedDict weblogs = [ ('Nanda', 'google.com'), ('Maha', 'google.com'), ('Fei', 'python.org'), ('Maha', 'google.com'), ('Fei', 'python.org'), ('Nanda', 'python.org'),

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

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']

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

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

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)))]