【问题标题】:Replacing values from one set with values from another, if the value of set1 = the key of set2?如果 set1 的值 = set2 的键,则将一组中的值替换为另一组中的值?
【发布时间】:2019-04-19 17:39:02
【问题描述】:

编辑:将字典更改为集合,因为我没有意识到 {} 表示集合。并固定说集合包含在元组中。

我想遍历 cardTuple 中的每个集合,对于 每个值,替换它与来自 imageDict 的相应值(面) .我假设我们将值与索引匹配,并以某种方式输出面部。也许我需要第三组或列表在输出之前存储结果?

imageDict = dict() # Contains index:face and looks like 1 ???? 2 ???? 3 ???? 4 ???? 5 ???? 6 ???? 7 ???? 8 ???? 9 ???? 10 ???? 11 ???? 12 ???? 13 ???? 14 ????

cardTuple = ({7, 42, 15, 47, 20, 52, 25, 30}, {3, 39, 14, 47, 55, 22, 23, 31})

我目前的做法:

newList = []
newList2 = []
for i in cardTuple:
      for j in i:
           if i == 1: ## maybe this needs to be 0?
               newList.append(imageDict[j])
           elif i == 2: ##  maybe 1?
               newList2.append(imageDict[j])

有什么建议吗?

【问题讨论】:

  • 您知道dict1 不是字典吗?预期的输出是什么?
  • 我的建议是查看How to Ask 并了解如何提供您上次尝试的minimal reproducible example。
  • 对不起。我的错。我将其修复为参考集。我还将尝试关注 IdleHands 并稍后添加更多细节,从我的代码中提供更多的 sn-ps。谢谢!
  • 如果你使用集合,结果的顺序可能会改变,因为集合是无序的。我相信这很好。
  • @Karim:需要明确的是,花括号 ({}) 的含义取决于它们的内容。如果它们是空的,或者它们存储用冒号分隔的键值对 (:),它们就是 dict。如果它们不是空的,但其中没有冒号,则它们是set。

标签: python python-3.x dictionary replace output


【解决方案1】:

首先,如 cmets 中所述,dict1 不是字典。这是一个set。但您可能希望它成为list。 这是使用列表推导式获取所需内容的简单方法:

mylist = [1,5,7,10,13]
mydict = {
          1:face1,2:face2,3:face3,4:face4,5:face5,6:face6,7:face7,
          8:face8,9:face9,10:face10,11:face11,12:face12,13:face13
         }

output = [mydict[key] for key in mylist]

>>> [face1, face5, face7, face10, face13]

【讨论】:

  • 因此,对于输出,您正在创建一个新列表,但我不明白比较如何与“for key in mylist”一起使用。也许你可以解释一下 mydict[key] 在做什么?是否将 mydict 键与 mylist 中的键进行比较?如果是这样,它会自动输出该值吗?
  • mydict[key] 正在根据提供的 key 提取值 (face1,face2...)。在这种情况下,mylist 中的项目。在这个例子中,它本质上是基于mylist = [1,5,7...]创建一个mydict[1], mydict[5], mydict[7]...列表
  • dict 对象是 key: value 对的集合。通过说mydict[key],我正在访问与key 关联的value。通过在列表理解的 for 循环中执行此操作,我创建了一个输出 list 类型,其中每个条目是与 mylist 中的每个 key 关联的 value。您可能想查找列表推导 - 它们是非常有用的 Python 构造。
  • 谢谢!非常感谢您的解释。我将尝试这个解决方案,而不是我现在的工作。
  • 如果这回答了您的问题,请随时接受答案:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-31
  • 2021-01-01
  • 1970-01-01
  • 2018-10-23
相关资源
最近更新 更多