0

如何删除元组中的特定元素?

例如:

      L={('a','b','c','d'):1,('a','b','c','e'):2}

      remove='b'

我想得到以下结果:

     {('a','c','d'):1,('a','c','e'):2}
4

2 回答 2

3
In [20]: L={('a','b','c','d'):1,('a','b','c','e'):2}

In [21]: {tuple(y for y in x if y != "b"):L[x] for x in L}
Out[21]: {('a', 'c', 'd'): 1, ('a', 'c', 'e'): 2}

或使用filter()

In [24]: { tuple(filter(lambda y:y!="b",x)) : L[x] for x in L}
Out[24]: {('a', 'c', 'd'): 1, ('a', 'c', 'e'): 2}
于 2012-11-22T22:45:17.030 回答
0

您可以使用字典理解表达式创建字典的更新版本:

L = {('a', 'b', 'c', 'd'): 1, ('a', 'b', 'c', 'e'): 2, ('f', 'g', 'h'): 3}

remove='b'
L = {tuple(i for i in k if i != remove) if remove in k else k:v for (k,v) in L.items()}

print L

输出:

{('a', 'c', 'e'): 2, ('a', 'c', 'd'): 1, ('f', 'g', 'h'): 3}

如您所见,它只在元组键中留下没有元素的项目。

于 2012-11-22T23:16:11.363 回答