[英]how to make list comprehension using while in loop
我有這樣的循環:
ex = [{u'white': []},
{u'yellow': [u'9241.jpg', []]},
{u'red': [u'241.jpg', []]},
{u'blue': [u'59241.jpg', []]}]
for i in ex:
while not len(i.values()[0]):
break
else:
print i
break
我總是需要返回第一個具有長度值的字典,然后是大於0的值,但是我想通過列表理解來使它返回
列表理解將產生整個列表,而您只需要一個項目 。
改用生成器表達式,並使next()
函數迭代到第一個值:
next((i for i in ex if i.values()[0]), None)
我給了next()
一個默認的返回值。 如果沒有匹配的字典,則返回None
。
演示:
>>> ex = [{u'white': []},
... {u'yellow': [u'9241.jpg', []]},
... {u'red': [u'241.jpg', []]},
... {u'blue': [u'59241.jpg', []]}]
>>> next((i for i in ex if i.values()[0]), None)
{u'yellow': [u'9241.jpg', []]}
但是,您應該重新考慮數據結構。 只有一對鍵值對的字典向我建議您改用另一種類型。 元組也許:
ex = [
(u'white', []),
(u'yellow', [u'9241.jpg', []]),
(u'red', [u'241.jpg', []]),
(u'blue', [u'59241.jpg', []]),
]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.