如何将此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,)
答案 0 :(得分:5)
您的代码几乎正确,只需删除, x
。
迭代字典迭代其键,而不是键和值。由于你只需要这里的密钥,迭代字典就可以了。
或者,您可以代替score.items()
(或仅在Python 2上使用score.iteritems()
)。
答案 1 :(得分:1)
您正在迭代字典的键,但是分配给(key, value)
。要迭代键值对,您可以使用items
或iteritems
:
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)