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)))
这是我的字典和迭代方法:
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)))