我一般对python和程序设计还很陌生,并且正在尝试创建一些简单的程序。 我决定构建一个小型抽认卡程序来帮助我对русский进行研究,并使用了以英语定义为键,而русский等效为值的字典。该程序可以运行,但是我很难弄清楚如何才能随机化被调用的单词。我尝试过random.choice(vocabulary),但收效甚微。我还尝试过将字典键/值对转换为列表,但后来却很难用我到目前为止使用的格式来调用它们。
是否有一种方法可以使使用此脚本的变体调用的密钥随机化?此外,不同的对象类型对此类程序是否更有用?谢谢
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class AdminControllerTest extends AbstractShiroTest {
@Autowired
private MockMvc mvc;
@Test
public void testSimple() throws Exception {
//1. Create a mock authenticated Subject instance for the test to run:
Subject subjectUnderTest = createNiceMock(Subject.class);
expect(subjectUnderTest.isAuthenticated()).andReturn(true);
//2. Bind the subject to the current thread:
setSubject(subjectUnderTest);
mvc.perform(MockMvcRequestBuilders.get("/admin/list"))
.andExpect(MockMvcResultMatchers.status().isOk());
}
}
答案 0 :(得分:1)
您可以使用random
模块的choice
函数:
from random import choice
numbers = [1, 2, 3, 4, 5]
random_element = choice(numbers)
您可以在字典的.keys()
上调用它以获取python2中的随机密钥,或者如abarnert所说,将您的项目更改为tuple
(或将密钥更改为list
)在python3中使用choice
之前。
答案 1 :(得分:0)
从非空序列 seq 返回随机元素。
唯一的问题是您在这里没有序列,您有字典。
但是字典可以对其键进行迭代,因此您可以直接构造其键的元组(或列表,或大多数其他类型的序列):
english = random.choice(tuple(vocabulary))
russian = vocabulary[english]
或者,由于其项视图是键值对的可迭代项:
english, russian = random.choice(tuple(vocabulary.items())
对于一本巨大的字典,这有点浪费,因为它将键或项复制到一个元组中只是为了选择一个。但是,当您只谈论3个键甚至5万个键时,这不会有问题,因此请保持简单。
答案 2 :(得分:0)
import random
vocabulary = {
"to study (imperfective)": "изучать",
"to begin (imperfective)": "начинать",
"to begin (perfective)": "начать"
}
randomChoice = random.randint(0, len(vocabulary)-1)
randomChoice = list(vocabulary.keys())[randomChoice]
print randomChoice
print vocabulary[randomChoice]
打印:
“学习(不完美)”,“开始(不完美)”或“开始(完美)”
和:“изучать”,“начинать”和“начать”