python嵌套结构_python-嵌套列表结构中的聚合数据

我有一个嵌套子列表的列表,其结构如下

in_data =

[

[

['name', 'name_1'],

['item_B', '2'],

['item_C', '3'],

['item_D', '4']

],

[

['name', 'name_2'],

['item_B', '5'],

['item_A', '2']

],

[

['name', 'name_3'],

['item_B', '6'],

['item_C', '7']

]

]

我正在收集所有的数据

in_data

做一个

唯一列表

包含子列表的

“标题”

/

姓名

每个项目一个+正确顺序的值。

因此,信息被保存在不同的数据结构中。

我想达到这个目标

:

res_list =

[

['name', ' name_1', ' name_2', 'name_3'],

['item_B', '2', '5', '6'],

['item_C', '3','-', '7'],

['item_D', '4','-', '-'],

['item_A', '-','2', '-']

]

我正试着用最恶毒的方式做这件事。我尝试了for循环,也尝试了map()+lambda,但没有成功。

更新

这是我的完整代码。

def get_names(a):

return reduce(lambda ac, v: ac + [v[0]] if v[0] not in ac else ac, a, [])[1:]

def collect_all_data(_data):

all_names = set(reduce(lambda x,y: x+y, map(get_names, _data)))

unique_names = list(map(lambda x: [x], all_names))

agg = list(map(lambda x:[x], unique_names))

agg = [['names']] + unique_names

for team_i, team_data in enumerate(_data):

team = ""

for i, skill_val in enumerate(team_data):

if i==0:

team = skill_val[1]

agg[0].append(team)

continue

else :

for i_us,us in enumerate(unique_names):

if us[0] == skill_val[0]:

agg[i_us+1].append(skill_val[1])

print("\--->{} type:{}".format(agg, type(agg)))

return agg

collect_all_data(in_data)

它产生输出:

注意

:的

秩序

子列表的

不重要,除非

这个

第一个

['name', ' name_1', ' name_2', 'name_3']

这应该是第一次。

[

['names', 'name_1', 'name_2', 'name_3'],

['item_D', '4'],

['item_B', '2', '5', '6'],

['item_C', '3', '7'],

['item_A', '2']

]

代码太长,但它没有添加

'-'

当物品没有价值的时候。

会是简单的方法吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值