首页 文章

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

提问于
浏览
0

我在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 回答

  • 1

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

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

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

    # 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()}
    
  • 0

    有了这种数据结构,你可以做的比没有好多少

    for v in a.values():
        del v[2]   # or v[n] in general
    
  • 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]
    

相关问题