2

我如何将此字典的键分成两个单独的列表?

score = {(13.5, 12.0): 10.5, (10.7, 19.3): 11.4, (12.4, 11.1): 5.3}

list1 = []
list2 = []

以便我在打印时可以获得这些列表?

list1 = [13.5, 10.7, 12.4]
list2 = [12.0, 19.3, 11.1]

我试过这个,但它不起作用

for (a, b), x in score:
    list1.append(a,)
    list2.append(b,)
4

4 回答 4

5

您的代码几乎是正确的,只需删除, x.

遍历字典是遍历它的键,而不是它的键和值。由于您只需要此处的键,因此可以遍历字典。

score.items()或者,您可以改为迭代(或score.iteritems()仅在 Python 2 上)。

于 2012-04-14T06:29:59.200 回答
1

您正在遍历字典的键,但分配给(key, value). 要遍历键值对,您可以使用itemsor iteritems

for (a, b), x in score.iteritems():

在这种特定情况下,您可以使用列表推导而不是显式循环:

list1 = [a for a, b in score]
list2 = [b for a, b in score]
于 2012-04-14T06:30:10.610 回答
1

或者,您可以结合使用 zip 和 splat(解包)

>>> score = {(13.5, 12.0): 10.5, (10.7, 19.3): 11.4, (12.4, 11.1): 5.3}
>>> x, y = zip(*score.keys())
>>> x
(10.7, 12.4, 13.5)
>>> y
(19.3, 11.1, 12.0)
于 2012-04-14T06:31:41.843 回答
0

你必须正确地循环你的钥匙

for (a, b) in score.keys():
    list1.append(a)
    list2.append(b)
于 2012-04-14T06:30:56.163 回答