使用单循环

时间:2016-01-22 18:48:23

标签: python

考虑如下字典:

a_dict = {"a":1,"b":2,"c":3}
b_dict = {"A":5,"B":6,"C":7}
for (k,v),(k1,v1) in zip(a_dict.items(),b_dict.items())):  
    print(k,v);
    print(k1,v1);

输出

b 2
B 6
a 1
A 5
c 3
C 7

在搜索字典后,我得到了字典的元素没有排序,这就是为什么这些字典元素是随机打印的。但我希望它们按顺序打印。

a 1
A 5
b 2
B 6
c 3
C 7

我该怎么做?

4 个答案:

答案 0 :(得分:1)

您可以使用chaining并排序:

from itertools import chain

a_dict = {"a":1,"b":2,"c":3}
b_dict = {"A":5,"B":6,"C":7}

for key, value in sorted(chain(a_dict.items(), b_dict.items()), 
                         key=lambda x: x[0].lower()):
    print(key, value)

打印:

a 1
A 5
b 2
B 6
c 3
C 7

答案 1 :(得分:1)

您可以使用sorted()对这两个词组进行排序,如下所示:

a_dict = {"a": 1,"b": 2,"c": 3}
b_dict = {"A": 5,"B": 6,"C": 7}
for (k,v), (k1,v1) in zip(sorted(a_dict.items()), sorted(b_dict.items())):
    print(k,v)
    print(k1,v1)

输出:

a 1
A 5
b 2
B 6
c 3
C 7

答案 2 :(得分:1)

如果要在存储时检索数据,则必须使用OrderedDict,因为dictionaries在插入数据时不会保留数据。

from collections import OrderedDict

a_dict=OrderedDict((k, v) for k,v in [["a",1],["b",2],["c",3]])
b_dict=OrderedDict((k, v) for k,v in [["A",5],["B",6],["C",7]])

for (k,v),(k1,v1) in zip(a_dict.items(),b_dict.items()):
    print(k,v);
    print(k1,v1);

答案 3 :(得分:0)

为避免重复排序,您还可以使用集合模块中的OrderedDict。