首页 > 解决方案 > python for循环删除列表中重复的输出数据

问题描述

从 python for 循环中,我得到每次迭代的重复输出数据。我想要的是只在每次迭代中获取新数据。

我怎样才能从列表中删除重复的数据,只得到不重复的数据

被复制的数据是小时分钟和秒

对不起我的英语不好 。

import json

with open('activities.json') as f:
    d = json.load(f)

keys = []
values = []
lijst = [[],[]]

def loop():
    for y in d['activities']:
        name = y['name']
        lijst[0].append(name)
        p = y['time_entries']

        for e in p:
            h = e['hours']
            m = e['minutes']
            s = e['seconds']

            lijst[1].append(h)
            lijst[1].append(m)
            lijst[1].append(s)

        print(lijst[1])
        test = dict((k, lijst[1]) for k in [name])

loop()

输出第一个数据在第二个列表中重复第二个在第三个中重复,依此类推:

[1, 2, 11, 0, 0, 1, 0, 0, 4, 0, 0, 2, 0, 0, 1, 0, 0, 13, 0, 0, 1]

[1, 2, 11, 0, 0, 1, 0, 0, 4, 0, 0, 2, 0, 0, 1, 0, 0, 13, 0, 0, 1, 0, 0, 6, 0 , 0, 12, 0, 0, 10, 0, 0, 3]

[1, 2, 11, 0, 0, 1, 0, 0, 4, 0, 0, 2, 0, 0, 1, 0, 0, 13, 0, 0, 1, 0, 0, 6, 0 , 0, 12, 0, 0, 10, 0, 0, 3, 0, 0, 5, 0, 0, 1, 0, 0, 2, 0, 0, 4, 0, 0, 1, 0, 0 , 3, 0, 0, 8, 0, 0, 5, 0, 0, 9, 0, 0, 14]

标签: python-3.x

解决方案


只需lijst在每次迭代的乞求时重置:

import json

with open('activities.json') as f:
    d = json.load(f)

keys = []
values = []

def loop():
    for y in d['activities']:
        lijst = [[],[]] #reset list
        name = y['name']
        lijst[0].append(name)
        p = y['time_entries']

        for e in p:
            h = e['hours']
            m = e['minutes']
            s = e['seconds']

            lijst[1].append(h)
            lijst[1].append(m)
            lijst[1].append(s)

        print(lijst[1])
        test = dict((k, lijst[1]) for k in [name])

loop()

推荐阅读