【发布时间】:2017-12-28 05:44:52
【问题描述】:
我有这本词典:
>>> times
{'time':[0,1,0], 'time_d':[0,1,0], 'time_up':[0,0,0]}
我想做这个输出,值的顺序很重要!:
0 1 0 0 1 0 0 0 0
# 0 1 0 | 0 1 0 | 0 0 0 === time | time_d | time_up items of the list
更确切地说,我想要一个这样的列表:
[0,1,0,0,1,0,0,0,0]
不使用print()。
如果没有列表理解,我可以这样做:
tmp = []
for x in times.values():
for y in x:
tmp.append(y)
我尝试使用一些列表推导,但任何人都可以工作,就像这两个:
>>> [y for x in x for x in times.values()]
[0,0,0,0,0,0,0,0,0]
>>> [[y for x in x] for x in times.values()]
[[0,0,0],[0,0,0],[0,0,0]
我怎样才能用一行来解决这个问题(列表理解)?
【问题讨论】:
-
根据您的预期输出顺序是否重要?
-
您不能保证使用
dict... -
是的,但是如果订单确实很重要,那么也许是使用适当的密钥来获取该订单的问题。这就是提出这个问题的原因。
-
@idjaw,嗯,是的,因为完全符合我要写的结果:
print('Time: {}:{}:{} / {}:{}:{} ({}:{}:{})'.format(INSERT HERE THE LIST COMPREHENSION))。 -
但是为了记录,你的 for 循环的等效列表理解只是
[y for x in times.values() for y in x],但请注意,这不能保证给出你想要的输出,因为你不能保证 a 的顺序字典。
标签: python list python-3.x dictionary list-comprehension