通过三重嵌套元组Python 3.4进行迭代

时间:2014-11-11 07:02:38

标签: python nested iteration tuples

让我们说我有一个三重嵌套元组,用于在TKinter中创建键盘。它看起来像这样:

kBoard = (
( ('~\n`', 1), ('!\n1', 1),..... etc.
 ),
(('Tab', 2), ('Q', 1),.... etc.
 ),
(('CapsLock', 2), ('A', 1),... etc. and so on
 ),
)

让我们说我想迭代这一点,使得第二层是键盘的行,我想抓住每个定义用作键。我尝试了一个嵌套的for循环,这给了我多个副本,并没有真正允许我抓住个别定义。那么我该如何做到这一点,以便我可以单独获取每个定义?请记住,我试图按照它们在元组中的顺序来获取这些定义。

1 个答案:

答案 0 :(得分:2)

试试Itertools.chain: -

dict(itertools.chain(*kBoard))

输出: -

{'A': 1, '!\n1': 1, 'Q': 1, 'CapsLock': 2, '~\n`': 1, 'Tab': 2}

或者List Comprehension具有dict功能,

>>>[dict(tup) for tup in kBoard]

输出: -

>>> 
[{'!\n1': 1, '~\n`': 1}, {'Q': 1, 'Tab': 2}, {'A': 1, 'CapsLock': 2}]

或使用简单的map功能: -

>>>map(dict, kBoard)

[{'!\n1': 1, '~\n`': 1}, {'Q': 1, 'Tab': 2}, {'A': 1, 'CapsLock': 2}]