Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 随机组合两个列表_Python - Fatal编程技术网

Python 随机组合两个列表

Python 随机组合两个列表,python,Python,嘿,伙计们,我想把这两个列表合并成一本字典。然而,在第二个for循环中,它只是不断地通过该循环,而不是返回到第一个循环。任何帮助都将不胜感激。谢谢大家! import random chores = ['dishes','bathroom','vacuum','walk dog'] assign = {} emails = ['a','b','c','d'] x=0 while x < 4: for i in chores: randomChore = rando

嘿,伙计们,我想把这两个列表合并成一本字典。然而,在第二个for循环中,它只是不断地通过该循环,而不是返回到第一个循环。任何帮助都将不胜感激。谢谢大家!

import random
chores = ['dishes','bathroom','vacuum','walk dog']
assign = {}
emails = ['a','b','c','d']

x=0
while x < 4:
    for i in chores:
        randomChore = random.choice(chores)
        chores.remove(randomChore)
    
        for key in emails: 
            assign[key] = randomChore
            x = x + 1
随机导入
家务活=[“盘子”、“浴室”、“吸尘器”、“遛狗”]
赋值={}
电子邮件=['a'、'b'、'c'、'd']
x=0
当x<4时:
对于我来说,家务活:
randomChore=random.choice(杂务)
杂务。删除(随机杂务)
对于输入电子邮件:
分配[键]=随机杂务
x=x+1

您只需要
随机。随机播放
,它的工作原理如下

import random

chores = ['dishes','bathroom','vacuum','walk dog']
assign = {}
emails = ['a','b','c','d']

random.shuffle(chores)
res = {key:val for key,val in zip(emails,chores)}

在您的代码中,需要删除用于键入电子邮件的
部分。它会选择随机的琐事,然后循环,添加电子邮件而不选择另一个随机琐事

这是工作代码

随机导入
家务活=[“盘子”、“浴室”、“吸尘器”、“遛狗”]
赋值={}
电子邮件=['a'、'b'、'c'、'd']
x=0
对于范围(0,len(杂务))中的i:
randomChore=random.choice(杂务)
杂务。删除(随机杂务)
分配[电子邮件[x]]=randomChore
x=x+1
打印(分配)

在这里,您不需要无用的内部循环和while循环来迭代键:

import random
chores = ['dishes','bathroom','vacuum','walk dog']
assign = {}
emails = ['a','b','c','d']


for i in emails:
  randomChore = random.choice(chores)
  chores.remove(randomChore)
  assign[i] = randomChore

print(assign)

为什么对这个答案投反对票?这工作正常。我的ikr也被否决了。。。。混乱我不知道这是否值得一次否决票,但很糟糕的是,为了做到这一点,你需要销毁输入杂务。此外,在循环中删除数组中的项也是低效的——实际上,您已经使一件简单的事情需要O(n²)的复杂性。洗牌数组更有意义。因此,如果我理解正确,如果你有两个for循环,它将继续在第二个循环上迭代,然后返回第一个循环?这一个也有效(+1)不确定是谁投了反对票,但你可以做一点压缩。我建议你尝试在每个列表中只包含三个项目。还要解释为什么需要外部
循环?简化代码的好主意,我试图指出他们哪里弄错了。我将编辑它。你做错的是从你正在迭代的列表中删除项目。这从来都不是个好主意。谢谢你!!这很简单,我坚持了这么久。