让我们说我有一个三重嵌套元组,用于在TKinter中创建键盘。它看起来像这样:
kBoard = (
( ('~\n`', 1), ('!\n1', 1),..... etc.
),
(('Tab', 2), ('Q', 1),.... etc.
),
(('CapsLock', 2), ('A', 1),... etc. and so on
),
)
让我们说我想迭代这一点,使得第二层是键盘的行,我想抓住每个定义用作键。我尝试了一个嵌套的for循环,这给了我多个副本,并没有真正允许我抓住个别定义。那么我该如何做到这一点,以便我可以单独获取每个定义?请记住,我试图按照它们在元组中的顺序来获取这些定义。
答案 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}]