【问题标题】:How to add new tuples to a set based on if an element exists in another set in pythonpython - 如何根据元素是否存在于python中的另一个集合中,将新元组添加到集合中
【发布时间】:2021-07-30 16:12:51
【问题描述】:

我有一个允许的项目目录,比如{("a", 1, 20), ("b", 4, 50)} 对应于(name, quantity, value)

如果我有一套:

my_set = {("a", 1, 20), ("b", 4, 50)}

我想在此添加一个新项目("a", 1),同时还从目录中获取其他详细信息(值),但将其附加到已经存在的元组中,并添加数值以便数量更新和新设置变成这样:

new_set = {**("a", 2, 20), **("b", 4, 50)}

我目前的代码如下。

def add_item(name, quantity, order): 
    items = []
    for item in CATALOGUE:
        items.append(item[0])
        if name in items:
            my_set.add((name,quantity))
        else:
            raise ValueError('item not in catalogue')
    return my_set

我有什么方法可以添加到此以获得预期的结果,还是需要一种全新的方法?

【问题讨论】:

  • 所以你想要{("a", 1), ("b", 4, 50), ("a",2,20)}
  • @Sujay 抱歉,不清楚我已经编辑了这个问题。我想要的是 {("a",2,20), ("b", 4, 50)}
  • 元组是不可变的,所以你必须用新的元组替换旧的元组。
  • 在这种情况下字典会更有意义吗?我不确定你想要完成什么。我认为拥有一本以“名字”为关键字的字典会更有意义。您对该键的值可能是一个元组。示例:my_dict = {'a': (1,20), 'b': (4,50)}
  • 您可以考虑使用dict 而不是setmy_dict = {"a": (1, 20), "b": (4, 50)}。然后检查是否name in my_dict,如果是my_dict[name] = (my_dict[name][0] + quantity, my_dict[name][1] + order)或类似的。

标签: python set tuples


【解决方案1】:

我建议你改变下一个方法: {"a":{"value":1, "count":1}, "b":{"value":2, "count":50}}

然后您可以轻松地更新您的价值观。

【讨论】:

  • 我需要将它作为一套退回。是否可以在最后将其转换回我开始使用的相同格式?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-23
  • 2013-01-10
  • 1970-01-01
  • 2012-12-12
  • 1970-01-01
  • 2014-01-20
  • 1970-01-01
相关资源
最近更新 更多