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

时间:2012-11-22 22:41:50

标签: python

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

例如:

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

      remove='b'

我想得到一个结果:

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

2 个答案:

答案 0 :(得分: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}

答案 1 :(得分: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}

正如你所看到的那样,它只会在元组键中留下没有元素的项目。