我有一个形式的元组:
{{theme.name}}
如何在for循环中删除dict?我尝试了以下但最后mylist = ({'a': 'a0', 't': 't0'}, {'a': 'a1', 't': 't1'}, {'a': 'a2', 't': 't2'}, ...)
仍然在元组中:
doc
答案 0 :(得分:5)
首先,不要使用名称list
,您将隐藏内置列表。
元组是不可变的,所以你必须构建一个新的元组。
>>> t = ({'a': 'a0', 't': 't0'}, {'a': 'a1', 't': 't1'}, {'a': 'a2', 't': 't2'})
>>> tuple(d for d in t if d['a'] != 'a0')
({'a': 'a1', 't': 't1'}, {'a': 'a2', 't': 't2'})
这假设您的所有词典实际上都有密钥'a'
。如果不是这种情况,请随意添加一些错误检查代码或使用字典的get
方法和生成器表达式中的回退值。
答案 1 :(得分:2)
首先;您已定义Tuple,而不是List。两者之间的主要区别在于元组是immutable。这意味着如果您想修改集合,则需要使用List:
my_list = [{'a': 'a0', 't': 't0'}, {'a': 'a1', 't': 't1'}, {'a': 'a2', 't': 't2'}]
注意使用方括号,而不是圆形。
有了这些知识,你可以选择:
构建另一个元组,省略您要删除的值:
my_tuple = ({'a': 'a0', 't': 't0'}, {'a': 'a1', 't': 't1'}, {'a': 'a2', 't': 't2'})
my_new_tuple = tuple(item for item in my_tuple if item['a'] != 'a0')
或者,使用列表,并删除您不想要的值:
my_list = [{'a': 'a0', 't': 't0'}, {'a': 'a1', 't': 't1'}, {'a': 'a2', 't': 't2'}]
for item in my_list:
if item['a'] == 'a0':
my_list.remove(item)