【问题标题】:Unpacking Tuple in Dictionary Value解包字典值中的元组
【发布时间】:2021-05-20 19:21:30
【问题描述】:

我有一组嫌疑人,这些嫌疑人存在于字典和字典中 我有一个元组值

我尝试将值解压缩为变量

suspects = (
 {'name': 'Anne', 'evidences': ('derringer', 'Caesarea')},
 {'name': 'Taotao', 'evidences': ('derringer', 'Petersen House')},
 {'name': 'Pilpelet', 'evidences': ('Master Sword', 'Hyrule')},
 )
for t in suspects:
   for name, weapon,location in t.items():

我被堆积了。 我尝试运行 python 导师来查看我的错误的反馈, 但我不明白如何提取特定值 带开箱解决方案

例如解决方案: 名字 = 安妮,武器 = 德林格,地点 = 凯撒利亚

【问题讨论】:

    标签: python dictionary for-loop tuples iterable-unpacking


    【解决方案1】:

    这将是这样做的方式:

    for t in suspects:
        weapon, location = t["evidences"]
        print(f"Name: {t['name']} Weapon: {weapon} Location: {location}")
    

    【讨论】:

      【解决方案2】:

      试穿一下尺寸:

      suspects = (
       {'name': 'Anne', 'evidences': ('derringer', 'Caesarea')},
       {'name': 'Taotao', 'evidences': ('derringer', 'Petersen House')},
       {'name': 'Pilpelet', 'evidences': ('Master Sword', 'Hyrule')},
       )
      for t in suspects:
          name = t['name']
          weapon, location = t['evidences']
          print(name, weapon, location)
      

      输出:

      Anne derringer Caesarea
      Taotao derringer Petersen House
      Pilpelet Master Sword Hyrule
      

      编辑:如果您必须解压缩两次,这是一种更丑陋的方法,确实解压缩两次(键、值)和(武器、位置):

      suspects = (
       {'name': 'Anne', 'evidences': ('derringer', 'Caesarea')},
       {'name': 'Taotao', 'evidences': ('derringer', 'Petersen House')},
       {'name': 'Pilpelet', 'evidences': ('Master Sword', 'Hyrule')},
       )
      for t in suspects:
          name = None
          weapon = None
          location = None
          for key, value in t.items():
             if key == "name":
                name = value
             elif key == "evidences":
                 weapon, location = value
          print(name, weapon, location)
      

      【讨论】:

      • 甚至name, (weapon, location) = t['name'], t['evidences'] 但我认为你的更清楚:)
      • 我的任务是使用至少两次的解包方法来解决这个问题
      【解决方案3】:

      您的数据结构不利于您正在尝试做的事情。如果有特定原因要保留此特定结构,请使用提供的答案。但是,如果您愿意使用不同的数据结构:

      suspects = {"Anne": ("derringer", "Caesarea"),
                  "Taotao": ("derringer", "Petersen House"),
                  "Pilpelet": ("Master Sword", "Hyrule")}
      
      for name, (weapon, location) in suspects.items():
          print(name, weapon, location)
      

      输出:

      Anne derringer Caesarea
      Taotao derringer Petersen House
      Pilpelet Master Sword Hyrule
      

      【讨论】:

      • 它是任务的一部分,我必须在这个数据结构中使用 unpcaking 方法来解决这个问题/跨度>
      猜你喜欢
      • 2012-08-19
      • 2019-04-21
      • 2016-02-27
      • 2021-03-26
      • 1970-01-01
      • 2021-03-21
      • 2017-08-05
      • 2014-06-09
      • 1970-01-01
      相关资源
      最近更新 更多