我在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个条目。
答案 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()}