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