Python 不规则格式列表

标签 python

我有数据(使用Gensim的LDA结果),如下所示:

[(1, 0.97456828373415116)]
[(0, 0.91883125256489728), (1, 0.020225186991467976), (2, 0.020314851937259213), (3, 0.020382294889184499), (4, 0.020246413617191008)]
[(0, 0.93783520386426555), (1, 0.015481826214088806), (2, 0.015545735781026492), (3, 0.015535246185968628), (4, 0.015601987954650424)]
[(2, 0.98493696818505228)]
[(3, 0.99067359305252778)]
[(0, 0.73578249201070511), (3, 0.25197028613750805)]

我想转换为以下格式:

[(0, 0), (1, 0.97456828373415116), (2, 0), (3, 0), (4, 0)]
[(0, 0.91883125256489728), (1, 0.020225186991467976), (2, 0.020314851937259213), (3, 0.020382294889184499), (4, 0.020246413617191008)]
[(0, 0.93783520386426555), (1, 0.015481826214088806), (2, 0.015545735781026492), (3, 0.015535246185968628), (4, 0.015601987954650424)]
[(0, 0), (1, 0), (2, 0.98493696818505228), (3, 0), (4, 0)]
[(0, 0), (1, 0), (2, 0), (3, 0.96747728928637211), (4, 0)]
[(0, 0), (1, 0), (2, 0), (3, 0.99067359305252778), (4, 0)]
[(0, 0.73578249201070511), (1, 0), (2, 0), (3, 0.25197028613750805), (4, 0)]

最佳答案

一种非常简单的方法是使用带有默认值的构造字典,然后更新它:

>>> d = dict([(0,0),(1,0),(2,0),(3,0)])
>>> print(d)
{0: 0, 1: 0, 2: 0, 3: 0}
>>> d.update([(0, 0.73578249201070511), (3, 0.25197028613750805)])
>>> print(d)
{0: 0.7357824920107051, 1: 0, 2: 0, 3: 0.25197028613750805}

编辑

结合hgwell的建议来输出元组列表,这是一个完整的函数(可能可以以某种方式做得更好,但无论如何它都是有效的):

def listify(l):
    res = []
    for j in l:
        d = dict([(0,0),(1,0),(2,0),(3,0),(4,0)])
        d.update(j)
        res.append(list(d.items()))
    return res

并在行动......

>>> z = listify([[(1, 0.97456828373415116)],
                 [(0, 0.91883125256489728), (1, 0.020225186991467976), (2, 0.020314851937259213), (3, 0.020382294889184499), (4, 0.020246413617191008)],
                 [(2, 0.98493696818505228)]])
>>> pprint(z)
[[(0, 0), (1, 0.9745682837341512), (2, 0), (3, 0), (4, 0)],
 [(0, 0.9188312525648973),
  (1, 0.020225186991467976),
  (2, 0.020314851937259213),
  (3, 0.0203822948891845),
  (4, 0.020246413617191008)],
 [(0, 0), (1, 0), (2, 0.9849369681850523), (3, 0), (4, 0)]]

关于Python 不规则格式列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32365358/

相关文章:

python - 矩阵乘法与按位运算符

python - 线程与线程

python - Django formset - 如何为 modelformset 中的每个表单提供不同的查询集

python - ModelForm save() 得到了一个意外的关键字参数 'commit'

python - 为什么我不能在 Python 中将 uint16 数组分配给数组向量?

python - Pandas :计算第一个连续的真值

python - 仅接受一种文件类型

python - 如何在 python 中规范化音频文件的音量?

python - 如何打乱隐式对数组?

python - 如何将 pandas 中的一行字符串转换为多列?