【发布时间】:2018-02-01 16:54:09
【问题描述】:
我的列表看起来像my_list = [['A', 6, 7], ['A', 4, 8], ['B', 9, 3], ['C', 1, 1]], ['B', 10, 7]]
我想查找每个内部列表中其他两列的平均值,按每个内部列表中的第一列分组。
[['A', 5, 7.5], ['B', 9.5, 5], ['C', 1, 1]]
['A', 5, 7.5]来自['A', (6+4)/2 ,(7+8)/2]
我不介意我最终会得到一本字典或其他东西,但我希望它仍然是一个列表。
我尝试了以下方法:
-
my_list1 = [i[0] for i in my_list] my_list2 = [i[1:] for i in my_list] new_dict = {k: v for k, v in zip(my_list1, my_list2)}
拆分原始列表,使第一列成为 KEY,第二列和第三列成为 VALUE,将其转换为字典将为您提供聚合,但问题是
我想保留小数位,四舍五入并给我整数而不是浮点值
my_list1 = ['A', 'A', 'B', 'C', 'B']
my_list2 = [[6, 7], [4, 8], [9, 3], [1, 1], [10, 7]]
new_dict= {'A': [5, 8], 'B': [10, 5], 'C': [1, 1]}
当我最理想的情况是,[['A', 5, 7.5], ['B', 9.5, 5], ['C', 1, 1]](不介意它是一本字典)
-
可能使用 for 循环思维将第二列和第三列转换为浮点数,然后当我将其转换为字典时它会给我一个浮点数。但没有区别,它向上取整并给出一个整数。
for i in range(0, len(my_list)): for j in range(1, len(my_list[i])): my_list[i][j].astype(float) dict = {} for l2 in my_list: dict[l2[0]] = l2[1:]
我需要保留小数位的原因是因为第二列和第三列是指 x 和 y 坐标..
因此,总而言之,目标是找到每个内部列表中其他两列的平均值,这些内部列表由每个内部列表中的第一列分组,尽可能多的小数位
【问题讨论】:
-
my_list是tuple,不是列表... -
您试图获得浮点数但在 python 2 中获得 int ?如果是这种情况,您的部门需要浮动。试试
['A', (6+4)/2.0 ,(7+8)/2.0]。
标签: python list dictionary list-comprehension dictionary-comprehension