将 multi for 循环 if/else 转换为列表理解
Convert multi for loop if/else into list comprehension
我正在尝试将其转换为列表理解。
当前代码
some_list = [[{"apple":"red"}, {"orange":"orange"}, {"pineapple":"yellow"}, [{"box":"brown"}, {"table":"grey"}, {"seat":"green"}], {"grapes":"purple"}, {"cherry":"red"}]]
category_list = []
for item in some_list:
tag_list = []
for elem in item:
if isinstance(elem, list):
for x in elem:
tag_list.append(x)
else:
tag_list.append(elem)
category_list.append(tag_list)
category_list
期望输出
[[{'apple': 'red'},
{'orange': 'orange'},
{'pineapple': 'yellow'},
{'box': 'brown'},
{'table': 'grey'},
{'seat': 'green'},
{'grapes': 'purple'},
{'cherry': 'red'}]]
我的尝试
[[x for x in elem] if isinstance(elem, list) else elem for item in some_list for elem in item]
结果
[{'apple': 'red'},
{'orange': 'orange'},
{'pineapple': 'yellow'},
[{'box': 'brown'}, {'table': 'grey'}, {'seat': 'green'}],
{'grapes': 'purple'},
{'cherry': 'red'}]
但这让我回到了起点。
试试这个理解:
some_list = [[{"apple":"red"}, {"orange":"orange"}, {"pineapple":"yellow"}, [{"box":"brown"}, {"table":"grey"}, {"seat":"green"}], {"grapes":"purple"}, {"cherry":"red"}]]
categories = [x if type(x) == dict else y for x in some_list[0] for y in x]
print(categories)
# Prints
# [{'apple': 'red'}, {'orange': 'orange'}, {'pineapple': 'yellow'},
# {'box': 'brown'}, {'table': 'grey'}, {'seat': 'green'},
# {'grapes': 'purple'}, {'cherry': 'red'}]
如果元素是字典,则附加元素,否则附加元素中的每个元素(这将是一个列表)。
注意:我实际上是列表理解的新手,所以如果我犯了任何错误,请告诉我!
我正在尝试将其转换为列表理解。
当前代码
some_list = [[{"apple":"red"}, {"orange":"orange"}, {"pineapple":"yellow"}, [{"box":"brown"}, {"table":"grey"}, {"seat":"green"}], {"grapes":"purple"}, {"cherry":"red"}]]
category_list = []
for item in some_list:
tag_list = []
for elem in item:
if isinstance(elem, list):
for x in elem:
tag_list.append(x)
else:
tag_list.append(elem)
category_list.append(tag_list)
category_list
期望输出
[[{'apple': 'red'},
{'orange': 'orange'},
{'pineapple': 'yellow'},
{'box': 'brown'},
{'table': 'grey'},
{'seat': 'green'},
{'grapes': 'purple'},
{'cherry': 'red'}]]
我的尝试
[[x for x in elem] if isinstance(elem, list) else elem for item in some_list for elem in item]
结果
[{'apple': 'red'},
{'orange': 'orange'},
{'pineapple': 'yellow'},
[{'box': 'brown'}, {'table': 'grey'}, {'seat': 'green'}],
{'grapes': 'purple'},
{'cherry': 'red'}]
但这让我回到了起点。
试试这个理解:
some_list = [[{"apple":"red"}, {"orange":"orange"}, {"pineapple":"yellow"}, [{"box":"brown"}, {"table":"grey"}, {"seat":"green"}], {"grapes":"purple"}, {"cherry":"red"}]]
categories = [x if type(x) == dict else y for x in some_list[0] for y in x]
print(categories)
# Prints
# [{'apple': 'red'}, {'orange': 'orange'}, {'pineapple': 'yellow'},
# {'box': 'brown'}, {'table': 'grey'}, {'seat': 'green'},
# {'grapes': 'purple'}, {'cherry': 'red'}]
如果元素是字典,则附加元素,否则附加元素中的每个元素(这将是一个列表)。
注意:我实际上是列表理解的新手,所以如果我犯了任何错误,请告诉我!