Python - 删除字典中的多个列表元素

时间:2014-12-01 23:04:46

标签: python list dictionary

我在Python中有一个简单的字典结构,它被用作伪数据库。六个条目的示例如下所示:

a={}
a['Name']   = ['a','b','c','d','e','f']
a['Number'] = [1  ,2  ,3  ,4  ,5  ,6  ]
a['Sum']    = [2  ,1  ,4  ,3  ,6  ,5  ]

字典中的每个键指的是特定的字段类型,例如名称,数字,总和等以及针对此密钥存储的数据是长度为n的列表,其中n是条目数。请注意,列表的长度均为n。这个设置允许我轻松访问每个条目的记录,例如,获取我可以使用的所有字段的第3个条目:

a['Name'][2]
a['Number'][2]
a['Sum'][2]

使用字典追加方法填充此结构非常容易。我的问题是删除条目。假设我要删除其中一条记录但将其余记录留在同一个词典/列表中,我该怎么做?我的意思是,我怎么能删除第三个条目,使字典和列表现在:

a['Name']   = ['a','b','d','e','f']
a['Number'] = [1  ,2  ,4  ,5  ,6  ]
a['Sum']    = [2  ,1  ,3  ,6  ,5  ]

非常感谢任何帮助。这可能是在我的代码中的某个循环中实现的,即我希望删除第i个条目,而不是总是第3个条目。

4 个答案:

答案 0 :(得分:5)

使用这种数据结构,你可以做的比

好得多
for v in a.values():
    del v[2]   # or v[n] in general

答案 1 :(得分:1)

在此处使用del功能似乎是从列表中删除项目的最简单方法...

del a['Name'][nth-item]

答案 2 :(得分:1)

也许您应该考虑pandas执行此任务:

In [69]: import pandas as pd
In [70]: a
Out[70]: 
{'Name': ['a', 'b', 'c', 'd', 'e', 'f'],
 'Number': [1, 2, 3, 4, 5, 6],
 'Sum': [2, 1, 4, 3, 6, 5]}

In [71]: df = pd.DataFrame(a).T

In [72]: df
Out[72]: 
        0  1  2  3  4  5
Name    a  b  c  d  e  f
Number  1  2  3  4  5  6
Sum     2  1  4  3  6  5

[3 rows x 6 columns]

In [73]: del df[2]

In [74]: df
Out[74]: 
        0  1  3  4  5
Name    a  b  d  e  f
Number  1  2  4  5  6
Sum     2  1  3  6  5

[3 rows x 5 columns]

答案 3 :(得分:0)

也许有点模糊,但我喜欢短暂:

# index to remove
n = 2

a = {k: v[:n] + v[(n + 1):] for k, v in a.items()}

作为一项功能,正如有人建议的那样:

   def del_idx(n):
       return {k: v[:n] + v[(n + 1):] for k, v in a.items()}

编辑:少列表。

a = {k: [i for ids, i in enumerate(v) if ids != n] for k, v in a.items()}