首页 > 解决方案 > 如何在列表中获取随机项目,并从第二个列表中获取另一个具有第一个选择名称的随机项目

问题描述

我有一个清单"Livros""Livros"我有("Lucas", "Isaias").

我还有另外两个列表,一个叫“Lucas”,另一个叫“Isaias”
,在Lucas我有("Lucas1", "Lucas2", "Lucas3")
Isaias ("Isaias1", "Isaias2", "Isaias3")

"Livros"所以,我需要在两者"Lucas和 Isaias之间选择一个随机的”。
例如,如果我选择,("Lucas")
我需要在 Lucas 列表中再抽一个项目。

因此,例如,现在,如果我的选择不适合我 的通话中的"Lucas2" 最后一项dict"Lucas2"

  Lucas2 = {
    "1" : "Text1" ,
    "2" : "Text2" ,
    "3" : "Text3" ,
    "4" : "Text4" 
}

最后我需要在相应的字典中打印键和值。

我试过一件事,但我在第二次打印时只收到一封信..所以我无法在字典中搜索..有人可以帮助我吗?

我一直在谷歌、论坛等中寻找答案……没有成功

#!/usr/bin/env python3
from random import *

Livros = ["Lucas", "Isaias"]


Lucas = ["Lucas1", "Lucas2"]
Isaias = ["Isaias1", "Isaias2"]

Lucas1 = {
    "1" : "Text1" ,
    "2" : "Text2" ,
    "3" : "Text3" ,
    "4" : "Text4"
}

Lucas2 = {
    "1" : "Text1" ,
    "2" : "Text2" ,
    "3" : "Text3" ,
    "4" : "Text4" 
}

Isaias1 = {
    "1" : "Text1" ,
    "2" : "Text2" ,
    "3" : "Text3" ,
    "4" : "Text4"
}


Isaias2 = {
    "1" : "Text1" ,
    "2" : "Text2" ,
    "3" : "Text3" ,
    "4" : "Text4"
}

x = choice(Livros)
print(x)

xx = choice(x)
print(xx)```

标签: pythonlistdictionary

解决方案


如果您需要打印出键,请使用嵌套字典而不是列表。我敢肯定,最后必须有一种奇特的方式来进行随机选择,递归或其他方式,但这可以按要求工作。

import random

Lucas1 = {
    "1" : "Text1" ,
    "2" : "Text2" ,
    "3" : "Text3" ,
    "4" : "Text4"
}

Lucas2 = {
    "1" : "Text1" ,
    "2" : "Text2" ,
    "3" : "Text3" ,
    "4" : "Text4" 
}

Lucas = {"Lucas1": Lucas1, "Lucas2": Lucas2}
Isaias = {"Isaias1": Isaias1, "Isaias2": Isaias2}

Livros = {"Lucas": Lucas, "Isaias": Isaias}

master_key = random.choice(Livros.keys())
entity_key = random.choice(Livros[master_key].keys())
result_key = random.choice(Livros[master_key][entity_key].keys())
print(result_key, Livros[master_key][entity_key][result_key])

否则,只需将对象嵌套在列表中:

Lucas1 = {
    "1" : "Text1" ,
    "2" : "Text2" ,
    "3" : "Text3" ,
    "4" : "Text4"
}

Lucas2 = {
    "1" : "Text1" ,
    "2" : "Text2" ,
    "3" : "Text3" ,
    "4" : "Text4" 
}

Lucas = [Lucas1, Lucas2, ... ]
Livros = [Lucas, Isaias]

result = random.choice(random.choice(random.choice(Livros)))

再一次,可能是一种更好的使用方式random.choice,但我目前正在做早餐,需要离开。


推荐阅读