python - 将嵌套列表转换为 dict,其中列表的第一个元素是 dict 的关键

标签 python python-2.7

我有 list ,

[['1', '4.00', 'A'],
['1', '5.00', 'B'],
['2', '4.00', 'V'],
['1', '12.00', 'C'],
['3', '4.00', 'R']]

如何将此列表转换为,

{'1': [{'total': 21}, {'data': [['A'], ['B'], ['C']]}]}
{'2': [{'total': 4}, {'data': ['C']}]}
{'3':....}

最佳答案

首先,我们对数据进行排序,这将根据初始元素对嵌套列表进行排序,因此我们得到嵌套列表,其中元素在嵌套列表内的列表的第一个索引上排序,然后我们只需 groupby()它们位于第一个元素上。

import itertools

a= [['1', '4.00', 'A'],
   ['1', '5.00', 'B'],
   ['2', '4.00', 'V'],
   ['1', '12.00', 'C'],
   ['3', '4.00', 'R'],
]

a.sort()

dictionary = {}
group = itertools.groupby(a, key = lambda x:x[0])
for k,g in group:
   ans = 0
   alphabets = []
   for i in g:
      ans+=(float(i[1]))
      alphabets.append([i[2]])
   dictionary[k] = [{'total':ans}, {'date':alphabets}]

print dictionary

>>> {'1': [{'total': 21.0}, {'date': [['C'], ['A'], ['B']]}], '3': [{'total': 4.0}, {'date': [['R']]}], '2': [{'total': 4.0}, {'date': [['V']]}]}

关于python - 将嵌套列表转换为 dict,其中列表的第一个元素是 dict 的关键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30542984/

相关文章:

python - pandas groupby 作为列表返回空,同时使用 agg 和 apply 函数

Python Tornado gen.engine异常处理

python - 如何计算一对特定值在数组中重复了多少次?

python - Selenium Python 在不同条件下将 Text-var 链接到子子中的 Value-var

python-2.7 - 如何在python中使用Spark Dataframe和Group By导出百分位数

python - 如何最好地将多个空格替换为一个(在 python 中)?

python - 如何应对类(class)不平衡?

python - httplib 未获取所有重定向代码

python-2.7 - 在 Python 中使用 XGBoost 根据多个输入变量预测输出

python - 为什么测试功能看不到我的 py.test 装置?