ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python匹配列表的长度与列不相等

2019-07-10 16:05:13  阅读:54  来源: 互联网

标签:python python-3-x


您是否可以列出不等长度的列表并将其写入一系列列,同时匹配另一个列表的顺序?

order = ['bx', 'cs', 'lb', 'pc']

totals = [
    [{'unit': 'pc', 'sum': Decimal('3.00')}],
    [{'unit': 'bx', 'sum': Decimal('3.00')}, {'unit': 'pc', 'sum': Decimal('16.00')}],
    [{'unit': 'bx', 'sum': Decimal('6.00')}, {'unit': 'lb', 'sum': Decimal('24.00')}, {'unit': 'pc', 'sum': Decimal('63.00')}],
    [{'unit': 'pc', 'sum': Decimal('36.00')}],
    [{'unit': 'bx', 'sum': Decimal('31.00')}]
]

desired_format = [
    ['', '', '', '3.00 pc'],
    ['3.00 bx', '', '', '16.00 pc'],
    ['6.00 bx', '', '24.00 lb', '63:00 pc'],
    ['', '', '', '36:00 pc'],
    ['31.00 bx', '', '', ''],
]

我已尝试过以下但如果按顺序排列的所有4个单元都无法正常工作.

desired_format = [[]]
for total in totals:
    data = []
    for idx, um in enumerate(total):
        if um['unit'] == order[idx]:
            data.append(str(um['sum'] + ' ' + str(um['unit'])))
        else:
            data.append('')
    desired_format.append(data)

我也试过这个,最后有太多空列和不均匀/无序列

desired_format = [[]]
for total in totals:
    data = []
    for um in total:
        for unit in order:
            if um['unit'] == unit:
                data.append(str(um['sum'] + ' ' + str(um['unit'])))
            else:
                data.append('')
    desired_format.append(data)

解决方法:

我建议您根据原始帖子提供以下代码:

desired_format = []
for total in totals:
    data = []
    for orderValue in order:
        found = False
        for um in total:
            if um['unit'] == orderValue:
                found = True
                break
        if found:
            data.append(str(um['sum'] + ' ' + str(um['unit'])))
        else:
            data.append('')
    desired_format.append(data)

print(desired_format)

标签:python,python-3-x
来源: https://codeday.me/bug/20190710/1425870.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有