gpt4 book ai didi

Python快速排列列表的技巧

转载 作者:太空宇宙 更新时间:2023-11-04 08:05:08 26 4
gpt4 key购买 nike

再次。我有这个:

[
[{'location': u'Austria', u'number': 33},
{'location': u'Albania', u'number': 29},
{'location': u'Afghanistan', u'number': 666}],

[{'location': u'Austria', u'items': 6},
{'location': u'Albania', u'items': 1},
{'location': u'Afghanistan'}, u'items': 0],

[{'location': u'Austria', u'loss': 1.0},
{'location': u'Albania', u'loss': 2.0},
{'location': u'Afghanistan', u'loss': 6.6}]
]

我试过像这样生成列表:

[
[u'Austria', 33, 6, 1.00],
[u'Albania', 29, 1, 2.00],
[u'Afghanistan', 666, 0, 6.60]
]

我已经试过了:

country = [i['location'] for i in data[0]]
number = [i['number'] for i in data[0]]
items = [i['items'] for i in data[1]]
loss = [i['loss'] for i in data[2]]

然后我压缩这个:

for i in range(0,len(country)):
l.append([name[i], number[i], items[i], loss[i]])

及其工作,但是:1)它很丑(对我来说)2) 它不是“一刀切”

在其他时间我可能只有:

[
[{'location': u'Austria', u'number': 33},
{'location': u'Albania', u'number': 29},
{'location': u'Afghanistan', u'number': 666}],

[{'location': u'Austria', u'loss': 1.0},
{'location': u'Albania', u'loss': 2.0},
{'location': u'Afghanistan', u'loss': 6.6}]
]

我的代码会失败(超出索引),其他时候我可能有更多的列表,等等。这个怎么弄好?

最佳答案

首先,我将其调换以便所有澳大利亚都在一起:

data_t = zip(*data)

然后我将通过提取子字典中的第一个非'location' 键来累积行(因为这似乎是您要查找的字段)。

rows = []
for country_dat in data_t:
country = country_dat[0]['location']
row = [country]
rows.append(row)
for dct in country_dat:
key = next(k for k in dct if k != 'location')
row.append(dct[key])

关于Python快速排列列表的技巧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32512420/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com