比较列表中的元素

时间:2018-09-08 14:26:02

标签: python list loops multidimensional-array list-comparison

我基本上有一个这样的列表列表:     [['sd', 'pd', 'od'], ['sd', 'pd1', 'od2'], ['sd2', 'pd2', 'od']] 我希望输出为['sd pd od ; pd1 od2 .', 'sd2 pd2 od .'] 因此,我想将每个列表的第一个元素彼此进行比较,如果它们相同,则想省略第一个元素(出现在第二个列表中)。

这是我的代码,因为它对元素进行了太多比较,因此不起作用,我也不知道为什么。

def simplistic(triples):
base = []
for x in triples:
    for y in triples:
        if x[0] == y[0]:
            base.append((x[:],y[1],y[2]))
print(base)

此代码的输出是:

[(['sd', 'pd', 'od'], 'pd', 'od'), (['sd', 'pd', 'od'], 'pd1', 'od2'), (['sd', 'pd1', 'od2'], 'pd', 'od'), (['sd', 'pd1', 'od2'], 'pd1', 'od2'), (['sd2', 'pd2', 'od'], 'pd2', 'od')]

2 个答案:

答案 0 :(得分:0)

由于您的问题尚不清楚,请尝试一下并检查是否可以。

bad_list = []
f=''
for i,s in enumerate(l):
    if s[0] == l[i-1][0] or s[0] in bad_list:
        f = f + ' '.join(s[1:])
        bad_list.append(s[0])           
    else:
        f = f + ' '.join(s)
    f = f+ ' ;'
f = [f[:-1] + '.']

f将是您的预期结果。

答案 1 :(得分:0)

如果您要根据第一个元素对列表进行分组,则可以使用let amount = { needed: 0, } class Store { constructor(a) { this.needed = a.needed; } addNeeded(x) { amount.needed += x; this.needed += x; } getNeeded() { return { amount: amount.needed, store: this.needed } } } const test1 = new Store(amount); const test2 = new Store(amount); test1.addNeeded(5); // this.needed returns 5, amount.needed is now 5 console.log(test1.getNeeded(), amount.needed); test2.addNeeded(10); // this.needed return 10, amount.needed is now 15 console.log(test2.getNeeded(), amount.needed);

轻松完成此操作
defaultdict