簡體   English   中英

列表理解中的多個 if 和 for 循環

[英]Multiple if and for loop in list comprehension

我在列表理解中轉換我的以下代碼時遇到問題

A = {
  "name": ['sahil', 'pankaj', 'honey'],
  'test': 'data'
}

Mylist = []
for k, v in A.items():
    if isinstance(v, list):
        for i in v:
            Mylist.append(i)
    else:
        Mylist.append(v)

我通過列表理解嘗試了這段代碼,但沒有得到結果

Mylist = [i
  for k, v in A.items() if isinstance(v, list) for i in v
  else i = v
]

我面臨問題語法錯誤。

因為您知道鍵'name'包含一個列表,鍵'test'包含一個字符串,您可以使用:

Mylist = [e for e in [*A['name'], A['test']]]

更簡單:

Mylist = [*A['name'], A['test']]

在上面的行中,您正在使用解包運算符和字符串元素創建一個列表

輸出:

['sahil', 'pankaj', 'honey', 'data']

或者,如果您不想 wnat 使用 dict 鍵,您可以使用:

Mylist = [i for e in A.values()  for i in (e if isinstance(e, list) else [e])]

您可以使用dict結構的keys()方法將值放入列表中。 希望這也有幫助

  A = {
    "name": ['sahil', 'pankaj', 'honey'],
    "test": 'data'
  }

 Mylist = []
 for k in A.keys():
    if k == "name":
       Mylist.extend(A[k]) #using extend as we already have a list present in the value for the dict, this just concatenates into one main list
    else:
       Mylist.append(A[k])
 print(Mylist)

或者只使用列表理解:

   A = {
    "name": ['sahil', 'pankaj', 'honey'],
    "test": 'data'
   }
   Mylist = [v for (k,v) in A.items() if k == "name"] #only returns values for k equal to "name"

   print(Mylist)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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