python创建带有变量赋值且不重复的列表理解

标签 python

我正在循环脚本中的一个函数,该函数返回列表列表,例如在第一次迭代中我得到以下列表列表:

list1 = [['Farm05', 'Red Hat Enterprise Linux, Standard', 1], ['Farm05', 'Red Hat Enterprise Linux, Standard', 1], ['Farm05', 'Red Hat Enterprise Linux, Standard', 1], ['Farm05', 'Red Hat Enterprise Linux, Premium', 1], ['Farm05', 'Red Hat nterprise Linux,Premium', 1]]

我想要得到的是一个包含不同项目的列表,以及每个订阅的数字摘要,即标准列表 = 1+1 =2,高级列表 1+1=2

list2 = ['Farm05','Red Hat Enterprise Linux, Standard',2]
list3 = ['Farm05','Red Hat Enterprise Linux, Premium',2]

我尝试过这种方法,但它没有删除重复项,而且看起来不干净。如何通过列表理解来实现它?

new_list = []
    for i in Farm:
        farm = i[0]
        subscription = i[1]
        count = i[2]
        count += count
        if farm not in list1 or subscription not in list1 or count  not in list1:
            new_list.extend(farm,subscription,count)

最佳答案

您需要的是groupby from itertools 。以下是如何使用它:

from itertools import groupby    

res = [[*i, sum(k[-1] for k in g)] for i, g in groupby(list1, key=lambda x: x[:-1])]

对于您提供的示例输入1打印:

[['Farm05', 'Red Hat Enterprise Linux, Standard', 3], ['Farm05', 'Red Hat Enterprise Linux, Premium', 2]]
<小时/>

1必须更正输入;它包含拼写错误。

关于python创建带有变量赋值且不重复的列表理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48660878/

相关文章:

python - Pythonista 如何在 App Store 限制下工作?

python - 如何访问元组字典的特定元素

python - Paypal 为 IPN 发送了警告邮件

python - celery 不工作 : Cannot connect to amqp://guest:**@127. 0.0.1:5672//

python - matplotlib 图表可以交互吗?

python - 从 Django 管理员调试

python - 关闭BeautifulSoup困惑编码置信度输出

python - 加速 Cython 实现点积乘法

python - 如何使用已计算的 TFIDF 分数计算余弦相似度

python - 您如何对 PNG 图像进行 base-64 编码以在 CSS 文件中的 data-uri 中使用?