簡體   English   中英

如何在while循環中使用列表理解

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM