Python 列表理解中的多个if和for循环

Python 列表理解中的多个if和for循环,python,Python,我在转换列表中的以下代码时遇到问题 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) 我通过列表理解尝试了这段代码,但没有

我在转换列表中的以下代码时遇到问题

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']]
在上行中,您正在使用unpacking操作符和string元素创建一个列表

输出:

['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)

列表理解会更有效我想要数据的价值我的输出看起来像['sahil','pankaj','蜂蜜','data']只要更新
k!=无
,并且也应返回列表中的数据。您是否可以分享您正在谈论的语法错误?此外,请解释您试图解决该错误的原因?