使用随机函数后如何选择特定元素?

时间:2019-01-17 17:55:25

标签: python python-3.x

我对代码中的列表使用了随机函数,但无法选择特定元素。

代码

import random
lst=['black','blue','green','red','yellow']
lst1=[1,2,3,4,5]
for a in range(1,4):
    l=random.choice(lst1)
    l1=random.choice(lst)
    print(l,l1)

如果输出为:

2 green

3 blue

4 yellow

我如何键入'3'并且输出为'blue'或当我键入'2'时输出的输出为'green'?(对于数字,使用随机功能后应打印相应的颜色)

4 个答案:

答案 0 :(得分:1)

将对放入字典中

pairs = {}
for a in range(1,4):
    l=random.choice(lst1)
    l1=random.choice(lst)
    pairs[l] = l1
n = int(input("Enter a number:"))
if n in pairs:
    print(pairs[n])
else:
    print"Not found")

答案 1 :(得分:0)

除了Barmar的好答案之外,您还可以稍微清理一下代码,并且避免两次获得相同的数字或颜色:

pairs = {l : l1 for l, l1 in zip(random.sample(lst1, 3), random.sample(lst, 3))}

random.sample(lst1, 3)将随机选择lst1中的3个 unique 元素。然后,我们还从其他列表中选择了3个唯一的随机元素。然后,我们将这些元素压缩到成对的列表中,然后将它们全部放入字典中。

答案 2 :(得分:0)

我建议先使用random.shuffle,然后再使用list.pop,以避免重复的键和值,以便在dict中始终包含三个元素(跳过的用户输入,已在其他答案中显示):

import random

colors=['black','blue','green','red','yellow']
nums=[1,2,3,4,5]

res = {}
for _ in range(3):
    random.shuffle(colors)
    random.shuffle(nums)
    num, color = nums.pop(), colors.pop()
    res[num] = color

print(res)
#=> {4: 'green', 3: 'yellow', 1: 'black'}
print(res[1])
#=> black

print(colors, nums) # not used
#=> ['blue', 'red'] [2, 5]

答案 3 :(得分:0)

不需要两个列表-只需使用random.sample()  将您的colorsenumerate移到字典中:

import random
colors=['black','blue','green','red','yellow']

# create the dict from a 3-parts sample, enumeration starting at 1
d = dict( enumerate(random.sample(colors,k=3), 1) )

测试:

for _ in range(5):
    d = dict( enumerate(random.sample(colors,k=3), 1) )
    print(d)

输出:

{1: 'blue', 2: 'yellow', 3: 'black'}
{1: 'yellow', 2: 'green', 3: 'blue'}
{1: 'black', 2: 'green', 3: 'yellow'}
{1: 'black', 2: 'yellow', 3: 'red'}
{1: 'yellow', 2: 'green', 3: 'blue'}

您可以通过d[1]d[3]来访问颜色。

Doku: