【问题标题】:Removing elements from dictionaries while maintaining form从字典中删除元素,同时保持形式
【发布时间】:2017-11-22 21:54:20
【问题描述】:

我有一个包含多个对象的时间间隔的字典,即实际上是一个二维数组,时间在 x 轴上,对象在 y 轴上。我也有相同的形状字典用于恒星通量值以适应那些时间,最后我有一个包含 Stellar ID 的字典,它是一个一维字符串数组。

除此之外,还有一个带有“FLAG”值的字典,如果是dic['FLAG'] != 0,则相应的通量和时间值将被丢弃。

使用time_new = (dic['time'][np.where(dic['FLAG'] == 0.)]) 似乎通过二维时间字典将每个接受的值附加到下一个的末尾,而不是简单地删除那些不合适的值并在整个二维数组形式中删除。

有人对如何解决此类问题有任何建议吗?非常感谢!

【问题讨论】:

  • 使用np.ma.MaskedArray,然后将.mask属性设置为dic['FLAG'] == 0.
  • 感谢您的回复!所以像 new_time = np.ma.MaskedArray(time, mask = dic['FLAG'] == 0.) ?
  • 是的,至少如果所有后续操作都支持屏蔽数组:)
  • 它似乎掩盖了几乎所有不寻常的数据,但我会继续挖掘,看看发生了什么,感谢您的帮助:)

标签: python dictionary time append 2d


【解决方案1】:

我不确定你的确切意思,所以我会给你一些可能的答案/提示。

#The dictionary
A = {"a" : 1, "b" : 2}

#N1
A.popitem()

#N2
A.pop("a")

#N3
List = list(A.keys())
A.pop(List[(len(List) - 1)])

我希望你能从中得到一些有用的东西。

【讨论】:

    【解决方案2】:

    简单的方法:

    import copy
    A = {'obj1':{'value':1,'time':{'FLAG':0}},
     'obj2':{'value':1,'time':{'FLAG':1}},
     'obj3':{'value':1,'time':{'FLAG':0}},
    }
    B = copy.deepcopy(A)
    objs = B.keys()
    for obj in objs :
        if B[obj]['time']['FLAG']==0:
            del B[obj]
    print B
    

    结果是:

    {'obj2': {'value': 1, 'time': {'FLAG': 1}}}
    

    【讨论】:

    • 好吧,我知道你在做什么了,也许我对字典的理解还没有达到标准,但我的时间和标志字典是相互独立的,但是对于每次记录的时间,对于每个对象,一个标志值记录在 FLAGS 字典中。所以我会在 FLAGS 字典中查询非零值并从时间字典中删除它们的坐标等效值,如果这有意义的话?
    • @user8188120 是的,你有 2 个字典。你总是可以使用 del 从你的字典中删除一些项目。但我认为最好使用 pandas 而不是 dict。
    • 好的,谢谢 :) 我想我需要多读一些字典,但我会试着理解你上面添加的代码
    猜你喜欢
    • 1970-01-01
    • 2015-07-16
    • 2021-04-09
    • 2011-08-16
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    • 2022-01-10
    • 2015-03-16
    相关资源
    最近更新 更多