lanyacp 发表于 2020-10-20 10:54:56

列表数据处理

有两组列表a = ["3,6,7","4,3,9","5,7,2"]
                b=["26,18,23","18,22,48",",8,36,27"]每个a列表中的一个数字对应一个b列表中的一个数字,我想把它统计处出来比如3:26+12=38,6:18,7:23+36=59.....全部统计出来再按照结果把前面的数字排序。我现在就是每个数字对应的结果相加不知道怎么去写,求大神指点

wp231957 发表于 2020-10-20 11:16:37

你那12   36 都是咋弄出来的

bonst 发表于 2020-10-20 11:31:22

看不懂你的说明,映射后怎么加上12,36的

疾风怪盗 发表于 2020-10-20 12:11:50

你这个3:26+12=38,6:18,7:23+36=59.....是不是写错了?3:26+22=48,6:18,7:23+36=59.....?

是a列表里的数字,对应b列表里的数字?
那不能先把列表都拆开么?a里现在3个元素,每个元素按逗号切片得到三个子元素,然后extend添加,形成a列表9个元素,b一样操作,然后就是按数字3对应的在a里的索引,找到在b中的元素就行了

lanyacp 发表于 2020-10-20 16:15:03

bonst 发表于 2020-10-20 11:31
看不懂你的说明,映射后怎么加上12,36的

就是3对应的数字加到一块,各自对应的数字加到一块

bonst 发表于 2020-10-21 21:22:31

那你写错了啊应该是3:26+22=48,你的12是从哪里来的

altf11 发表于 2020-10-22 10:55:03

本帖最后由 altf11 于 2020-10-22 11:04 编辑

我猜你应该是要输出如图的结果:


bonst 发表于 2020-10-22 11:02:52

楼上正解

疾风怪盗 发表于 2020-10-22 14:27:57

a = ["3,6,7","4,3,9","5,7,2"]
new_a=[]
for i in a:
    new_a.extend(i.split(','))
b=["26,18,23","18,22,48","8,36,27"]
new_b=[]
for i in b:
    new_b.extend(i.split(','))
result={}
for key1,key2 in zip(new_a,new_b):
    if key1 not in result.keys():
      result=eval(key2)
    else:
      result +=eval(key2)
print(result)
print(sorted(result.items(),key = lambda item:item))

{'3': 48, '6': 18, '7': 59, '4': 18, '9': 48, '5': 8, '2': 27}
[('5', 8), ('6', 18), ('4', 18), ('2', 27), ('3', 48), ('9', 48), ('7', 59)]
页: [1]
查看完整版本: 列表数据处理