将字典键的2个元素分成2个列表?

时间:2012-04-14 06:27:45

标签: python

如何将此dict的键分成两个单独的列表?

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 个答案:

答案 0 :(得分:5)

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

迭代字典迭代其键,而不是键和值。由于你只需要这里的密钥,迭代字典就可以了。

或者,您可以代替score.items()(或仅在Python 2上使用score.iteritems())。

答案 1 :(得分:1)

您正在迭代字典的键,但是分配给(key, value)。要迭代键值对,您可以使用itemsiteritems

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

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

list1 = [a for a, b in score]
list2 = [b for a, b in score]

答案 2 :(得分: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)

答案 3 :(得分:0)

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

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