0

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

我尝试将值解压缩为变量

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 导师来查看我的错误的反馈,但我不明白如何通过解包解决方案提取特定值

例如解决方案: Name = Anne , Weapon = Derringer , Location = Caesarea

4

3 回答 3

0

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

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
于 2021-02-17T21:16:01.800 回答
0

这将是这样做的方法:

for t in suspects:
    weapon, location = t["evidences"]
    print(f"Name: {t['name']} Weapon: {weapon} Location: {location}")
于 2021-02-17T21:10:35.130 回答
0

试穿这个尺寸:

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

编辑:如果您必须解包两次,这是一种更丑陋的方法,可以解包两次 (key, value) 和 (weapon, location) :

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)
于 2021-02-17T21:08:01.177 回答