【问题标题】:How can i change the values in dictionary of lists in python如何更改python列表字典中的值
【发布时间】:2012-12-10 06:06:29
【问题描述】:

我有一本这样的字典

dict1 = [('var1','aa'),('var2','bb')('var3','cc')]

我还有一本字典

dict2 = [('var2','22'),('var3','33'),('var5','23'),('var6','33'),('var7','23')]

我想做的是用dict1中的变量替换dict2的内容

我的意思是最终的 dict3 = dict2 = [('var2','bb'),('var3','cc'),('var5','23'),('var6','33'),('var7','23')]

【问题讨论】:

  • 那些不是字典,它们是元组列表,用 dict() 将它们转换为字典,遍历键并替换。
  • @monkut 你为什么不把它作为答案发布?你打败了我(在我写代码的时候)。

标签: python


【解决方案1】:
>>> list1 = [('var1','aa'),('var2','bb'),('var3','cc')]
>>> list2 = [('var2','22'),('var3','33'),('var5','23'),('var6','33'),('var7','23')]
>>> dict1 = dict(list1)
>>> list2 = [(k, dict1.get(k, v)) for k, v in list2]
>>> list2
[('var2', 'bb'), ('var3', 'cc'), ('var5', '23'), ('var6', '33'), ('var7', '23')]

这将保持原来list2的顺序

【讨论】:

  • @user33 证明我错了哈哈。但是,如果您要“替换”与此类变量关联的值,那么您确实应该使用字典。元组是不可变的,而字典(看起来)正是你正在做的事情。
  • @Mathew 实际上我的其他位代码正在使用元组。最初我不需要改变它。但现在我需要做一些替换。所以我只是更喜欢最终结果是元组,这样我就不需要接触其余的代码。我是 python 新手,所以对 dic 和 tuple 感到困惑。我只是想更换东西,不知道那是字典还是元组。您的解决方案也很好,但这正是我想要的。正如我在看到此答案之前在您的评论中所写的那样
  • @user33 我只是想解释一下,为什么将来你想用字典来处理这样的事情。 Another explanation.
【解决方案2】:

那些不是dictionaries。如果他们是,以下是如何做到这一点:

>>> dict1 = {'var1':'aa', 'var2':'bb' ,'var3':'cc'}
>>> dict2 = {'var2':'22', 'var3':'33', 'var5':'23', 'var6':'33', 'var7':'23'}
>>> for key in dict2:
...     if key in dict1:
...             dict2[key] = dict1[key]
... 
>>> dict2
{'var5': '23', 'var7': '23', 'var6': '33', 'var3': 'cc', 'var2': 'bb'}

您可能想从dict1dict2 开始,实际上是我的示例中的字典,但请注意,您可以使用例如轻松转换它们。 dict1 = dict(dict1).

【讨论】:

  • 我可以在替换内容后转换回元组
  • 是的,只需使用[(k, v) for k, v in dict2.items()]
  • 是的,但是如果您想要该元组形式的最终结果,只需使用 sberry 的答案。
  • @sberry: 还是只是dict2.items()?不需要列表推导(尽管您可能必须在 Python 3 中使用 list(dict2.items()))。
  • @Marius 如果你想维持秩序,你不能只使用.items()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-30
  • 1970-01-01
  • 1970-01-01
  • 2019-10-06
相关资源
最近更新 更多