Python 使用单循环顺序迭代字典元素

Python 使用单循环顺序迭代字典元素,python,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

考虑以下词典:

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
我如何才能做到这一点?

您可以使用和排序:

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

您可以使用
sorted()
为两个DICT下订单,如下所示:

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

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

如果您想在存储时检索数据,则必须使用
OrderedDict
,因为
词典在插入数据时不会保留数据

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

这取决于你希望他们如何分类。下面使用
chain
的答案是按键的小写版本对所有元素进行排序(这可能是您想要的)。