【问题标题】:Python Exercise Tuples, set and listPython练习元组,设置和列表
【发布时间】:2021-11-07 01:21:01
【问题描述】:

你能帮帮我吗?我尝试了一切,但我迷路了。 从数据中我需要得到这个元组列表。 我们的想法是以最易读的方式组织这个列表。 从数据中,如果我找到一个 1,我需要创建一个包含值的元组和一个包含第二列中的字母的列表,所以它会按顺序出现,如 ['E', 'B', 'E' ]。

这是数据:

[(1, 'E'),
 (2, 'A'),
 (5, 'B'),
 (3, 'A'),
 (6, 'C'),
 (7, 'A'),
 (9, 'A'),
 (1, 'B'),
 (2, 'E'),
 (3, 'B'),
 (7, 'C'),
 (5, 'C'),
 (3, 'D'),
 (8, 'E'),
 (9, 'B'),
 (8, 'D'),
 (3, 'E'),
 (5, 'D'),
 (8, 'E'),
 (9, 'E'),
 (7, 'E'),
 (3, 'E'),
 (5, 'D'),
 (9, 'A'),
 (4, 'E'),
 (6, 'E'),
 (8, 'A'),
 (5, 'E'),
 (6, 'A'),
 (0, 'C'),
 (9, 'A'),
 (3, 'D'),
 (5, 'E'),
 (4, 'B'),
 (6, 'B'),
 (7, 'D'),
 (8, 'B'),
 (9, 'C'),
 (1, 'E'),
 (5, 'E')]

# Result/
# ('0', ['C'])
# ('1', ['E', 'B', 'E'])
# ('2', ['A', 'E'])
# ('3', ['A', 'B', 'D', 'E', 'E', 'D'])
# ('4', ['E', 'B'])
# ('5', ['B', 'C', 'D', 'D', 'E', 'E', 'E'])
# ('6', ['C', 'E', 'A', 'B'])
# ('7', ['A', 'C', 'E', 'D'])
# ('8', ['E', 'D', 'E', 'A', 'B'])
# ('9', ['A', 'B', 'E', 'A', 'A', 'C'])

【问题讨论】:

    标签: python list set tuples


    【解决方案1】:

    你可以使用defaultdict:

    from collections import defaultdict
    data = [(1, 'E'), (2, 'A'), (5, 'B'), (3, 'A'), (6, 'C'), (7, 'A'), (9, 'A'), (1, 'B'),
            (2, 'E'), (3, 'B'), (7, 'C'), (5, 'C'), (3, 'D'), (8, 'E'), (9, 'B'), (8, 'D'),
            (3, 'E'), (5, 'D'), (8, 'E'), (9, 'E'), (7, 'E'), (3, 'E'), (5, 'D'), (9, 'A'),
            (4, 'E'), (6, 'E'), (8, 'A'), (5, 'E'), (6, 'A'), (0, 'C'), (9, 'A'), (3, 'D'),
            (5, 'E'), (4, 'B'), (6, 'B'), (7, 'D'), (8, 'B'), (9, 'C'), (1, 'E'), (5, 'E')]
    
    d = defaultdict(list)
    for x, y in data:
        d[str(x)].append(y)
    
    output = sorted(d.items())
    print(output)
    

    输出:

    [('0', ['C']), ('1', ['E', 'B', 'E']), ('2', ['A', 'E']), ('3', ['A', 'B', 'D', 'E', 'E', 'D']), ('4', ['E', 'B']), ('5', ['B', 'C', 'D', 'D', 'E', 'E', 'E']), ('6', ['C', 'E', 'A', 'B']), ('7', ['A', 'C', 'E', 'D']), ('8', ['E', 'D', 'E', 'A', 'B']), ('9', ['A', 'B', 'E', 'A', 'A', 'C '])]
    

    或者,如果您先验地知道密钥,则可以提前设置密钥。这不需要defaultdict 也不需要sorted(后者在python 3.7+ 中)。

    d = {str(k): [] for k in range(10)}
    for x, y in data:
        d[str(x)].append(y)
    output = list(d.items())
    

    【讨论】:

    • 这就是我需要的,你能建议我如何将此默认字典转换为列表吗?另外,我需要整理一下。
    • 哦,你需要一份清单!我已经更新了答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-20
    • 2019-08-07
    • 1970-01-01
    • 1970-01-01
    • 2015-05-01
    相关资源
    最近更新 更多