【问题标题】:Removing a dictionary key value having multiple value [closed]删除具有多个值的字典键值[关闭]
【发布时间】:2021-06-05 04:31:59
【问题描述】:

我的字典是这样的:

my_dict = {
   '0': ['1'].
   '3': ['2'].
   '1': ['0', '9', '3'].
   '4': ['1', '4'].
}

用户将输入一个键和值。我的函数将从键值对中删除该值。

def deleteVal (my_dict, key_val, val):
   # write your function here

如果任何用户从只有 1 个值的键值对中删除一个值,它将删除整个键。例如:如果用户从0 中删除值1,该函数将删除整个0 键,因为它没有任何值。
我该怎么做?

【问题讨论】:

  • 你试过什么?您在描述所需逻辑方面做得很好,该函数会自行编写
  • 子类字典或编写代码
  • @Cireo 实际上,我搜索了半个小时。没有找到合适的。
  • 不要太苛刻,但我看到“python 从列表中删除元素”有 1800 万个结果,“python 从字典中删除键”有 450 万个结果,“python 检查列表是否为”有 102M 个结果空的'。 30 分钟并不能真正涵盖没有代码

标签: python-3.x dictionary


【解决方案1】:
def deleteVal (my_dict, key_val, val):
    if len(my_dict.get(key_val, "1"))>1:
        try:
            my_dict[key_val].remove(val)
        except ValueError:
            pass 
    else:
        my_dict.pop(key_val, None)

【讨论】:

  • val -> key_val 在您的else 中,并且您的 len 检查错误,如果您想完全安全可能还想检查 key_val 是否存在
  • @Cireo: val -> key_val in your else 同意;固定的。 您的 len 检查错误 不同意; 如果您想完全安全,可能还想检查 key_val 是否存在必须为 OP 留下一些事情!
  • 很公平,不管实现如何,都会有一些有趣的极端案例;)
  • @CireoL See How can I remove a key from a Python dictionary? 无需检查密钥是否存在...
  • @Cireo:使用.get 修复。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-27
  • 2022-11-25
相关资源
最近更新 更多