如何删除元组中的特定元素?
例如:
L={('a','b','c','d'):1,('a','b','c','e'):2}
remove='b'
我想得到一个结果:
{('a','c','d'):1,('a','c','e'):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}
正如你所看到的那样,它只会在元组键中留下没有元素的项目。