Python 在迭代字典时省略了一些条目,为什么?

Python omits some entries while itereting over dictionary, why?

这是我的字典和迭代方法:

update_config_switch = OrderedDict([
    (mode0               , self.mode0Box),
    (config_list[14]     , self.baudrate0Box),
    (config_list[1]      , self.RX_size_uart0Box),
    (config_list[2]      , self.RX_timeout_uart0Box),
    (config_list[3]      , self.TX_size_uart0Box),
    (mode1               , self.mode1Box),
    (config_list[15]     , self.baudrate1Box),
    (config_list[5]      , self.RX_size_uart1Box),
    (config_list[6]      , self.RX_timeout_uart1Box),
    (config_list[7]      , self.TX_size_uart1Box),
    (config_list[8]      , self.RX_size_socket0Box),
    (config_list[9]      , self.RX_timeout_socket0Box),
    (config_list[10]     , self.TX_size_socket0Box),
    (config_list[11]     , self.RX_size_socket1Box),
    (config_list[12]     , self.RX_timeout_socket1Box),
    (config_list[13]     , self.TX_size_socket1Box)])
    print update_config_switch
    for key, val in update_config_switch.iteritems():
        print key
        try:
            index = val.findText(str(key))
            if index >= 0:
                val.setCurrentIndex(index)
        except:
            val.setProperty("value", int(key))

这个字典应该有 16 个项目,但是当我打印它或每次循环时打印 key 时,我只得到 7 个结果,如下所示:

OrderedDict([('eth', ), (9600, ), (300, ), (500, ), ('dev', ), (115200, ), (1000, ) ])

这是为什么以及如何解决这个问题?

如果您只有 7 个结果,则您的数据中一定有重复键。您可以轻松验证您拥有多少个唯一密钥:

print(len(set(config_list)))