【问题标题】:Dictionary of tuples元组字典
【发布时间】:2021-11-01 18:57:00
【问题描述】:

我有一个这样的元组列表和字典:

fruits=['apple','orange']

mydict={0:('apple', 12),
        1:('xyz',20),
        2:('orange',15)}

我希望能够在元组 item[0] 上应用一个条件,这样如果值存在于列表“fruits”中,那么我希望将字典更新为:

mydict={0:('apple', 12, 'f'),
        1:('tomato', 20, 'unknown'),
        2:('orange', 15, 'f')}

我怎样才能做到这一点?任何帮助表示赞赏。

【问题讨论】:

标签: python dictionary tuples conditional-statements


【解决方案1】:

类似的东西

fruits = ['apple', 'orange']

data = {0: ('apple', 12),
        1: ('xyz', 20),
        2: ('orange', 15)}

for k, v in data.items():
    flag = v[0] in fruits
    data[k] = (v[0], v[1], 'f' if flag else 'unknown')
print(data)

输出

{0: ('apple', 12, 'f'), 1: ('xyz', 20, 'unknown'), 2: ('orange', 15, 'f')}

【讨论】:

  • 但 OP 要求更新原始字典。
  • @quamrana - 这是真的。如果这对他/她是否重要,请从 OP 那里获得。无论如何-我已经修改了代码..所以请随意投票:-)
  • 我们可能要等很长时间。 . .所以在此期间 +1!
【解决方案2】:

如果你想更新现有的字典,我会这样做:

fruits = ['apple','orange']

mydict = {0:('apple', 12),
          1:('tomato', 20),  # <-- I changed this.
          2:('orange', 15)}

for i, (fruit, score) in mydict.items():
    tag = 'f' if fruit in fruits else 'unknown'
    mydict[i] = (fruit, score, tag)

在此之后,您的字典 mydict 将如下所示:

{0: ('apple', 12, 'f'), 1: ('tomato', 20, 'unknown'), 2: ('orange', 15, 'f')}

【讨论】:

    【解决方案3】:

    这可以通过以下代码实现:

    fruits=['apple','orange']
    
    mydict={0:('apple', 12),
            1:('xyz',20),
            2:('orange',15)}
    
    for key, tup in mydict.items():
        mydict[key] = tup + ('f',) if tup[0] in fruits else tup + ('unknown',)
        
    print (mydict)
    

    输出:

    {0: ('apple', 12, 'f'), 1: ('xyz', 20, 'unknown'), 2: ('orange', 15, 'f')}
    

    【讨论】:

      【解决方案4】:

      你可以用字典理解来做到这一点:

      fruits=['apple','orange']
      
      mydict={0:('apple', 12),
              1:('xyz',20),
              2:('orange',15)}
      
      res = {k: v + ('f',) if v[0] in fruits else v + ('unknown',) for (k,v) in mydict.items()}
      
      print(res)
      

      【讨论】:

        猜你喜欢
        • 2017-09-17
        • 2010-12-19
        • 2016-01-10
        • 2016-06-12
        • 2021-03-21
        • 1970-01-01
        • 2011-12-19
        • 1970-01-01
        相关资源
        最近更新 更多