使用for和if循环将不同长度的元素组合成一个列表Python
输入:使用for和if循环将不同长度的元素组合成一个列表Python,python,arrays,python-3.x,list,Python,Arrays,Python 3.x,List,输入: a = [{'layer': 'OVC', 'ceiling': '020', 'type': None}] b = [{'layer': 'BKN', 'ceiling': '010', 'type': None}, {'layer': 'OVC', 'ceiling': '020', 'type': None}] c = [{'layer': 'BKN', 'ceiling': '010', 'type': None}, {'layer': 'BKN', 'ceiling': '02
a = [{'layer': 'OVC', 'ceiling': '020', 'type': None}]
b = [{'layer': 'BKN', 'ceiling': '010', 'type': None}, {'layer': 'OVC', 'ceiling': '020', 'type': None}]
c = [{'layer': 'BKN', 'ceiling': '010', 'type': None}, {'layer': 'BKN', 'ceiling': '020', 'type': None},{'layer': 'OVC', 'ceiling': '030', 'type': None}]
d = [a,b,c]
results1 = []
results2 = []
for i in range(0,len(d)):
res1=[]
res2=[]
cloudstf = d[i]
if not cloudstf:
res1 = "-9999"
res2 = "-9999"
results1.append(res1)
results2.append(res2)
elif len(d[i])==1:
res1 = d[i]["layer"]
res2 = d[i]["ceiling"]
results1.append([res1])
results2.append([res2])
elif len(d[i])>1:
for k in range(0,len(d)):
res1 = d[i][k]["layer"]
res2 = d[i][k]["ceiling"]
results1.append([res1])
results2.append([res2])
cloudtf = []
cloud_group_layer = results1
cloud_group_height = results2
print(cloud_group_height)
print(cloud_group_layer)
而不是得到:
cloud_group_layer = [['OVC'], ['BKN'], ['OVC'], ['BKN'],['BKN'],['OVC']]
cloud_group_height = [['020'], ['010'], ['020'], ['010'],['020'],['030']]
我如何获得:
cloud_group_layer = [['OVC'], ['BKN','OVC'], ['BKN','BKN','OVC']]
cloud_group_height = [['020'], ['010','020'], ['010','020','030']]
其中,层和高度按数量分组。代码就是这样,只是语法有点混乱。或者,由于高度的原因,它可能是一个元组
由于索引的原因,您在运行它及其时可能会出现此错误:
回溯(最近一次呼叫最后一次):
文件“main.py”,第22行,在
res1=d[i][“层”]
TypeError:列表索引必须是整数或片,而不是str
你可以通过一些理解来做到这一点,比如:
代码:
测试代码:
你可以通过一些理解来做到这一点,比如:
代码:
测试代码:
简单的解决方案可能是获取要附加的列表,而不是该列表的元素。假设您想追加['BKN','OVC']
,然后不要追加['BKN']
和['OVC']
,在获取时追加整个列表
希望这有帮助 简单的解决方案可能是获取要附加的列表,而不是该列表的元素。假设您想追加['BKN','OVC']
,然后不要追加['BKN']
和['OVC']
,在获取时追加整个列表
希望这有帮助 我想我找到了我想我找到了
Traceback (most recent call last):
File "main.py", line 22, in <module>
res1 = d[i]["layer"]
TypeError: list indices must be integers or slices, not str
cloud_group_layer = [[x['layer'] for x in data] for data in d]
cloud_group_height = [[x['ceiling'] for x in data] for data in d]
a = [{'layer': 'OVC', 'ceiling': '020', 'type': None}]
b = [{'layer': 'BKN', 'ceiling': '010', 'type': None},
{'layer': 'OVC', 'ceiling': '020', 'type': None}]
c = [{'layer': 'BKN', 'ceiling': '010', 'type': None},
{'layer': 'BKN', 'ceiling': '020', 'type': None},
{'layer': 'OVC', 'ceiling': '030', 'type': None}]
d = [a, b, c]
wanted_cloud_group_layer = [['OVC'], ['BKN', 'OVC'], ['BKN', 'BKN', 'OVC']]
wanted_cloud_group_height = [['020'], ['010', '020'], ['010', '020', '030']]
cloud_group_layer = [[x['layer'] for x in data] for data in d]
cloud_group_height = [[x['ceiling'] for x in data] for data in d]
assert wanted_cloud_group_layer == cloud_group_layer
assert wanted_cloud_group_height == cloud_group_height