在字典中创建随机值,同时遍历列表并追加

时间:2020-04-24 06:28:15

标签: python loops dictionary random jupyter-notebook

我需要以以下格式创建字典结构。

list_1 = [1,2,3,4,5]

list_2 = ['a', 'b', 'c', 'd', 'e', 'f', 'g']

list_3 = random.sample(list_2 , random.randint(0,len(list_2))

循环为len(list_1),需要循环使用list_2,然后使用通过list_3创建的随机样本,在迭代时将list_3的每个值分配为下面的内部字典中的值。

*所需的字典格式:

my_dict = { 1: { 1: a, 
                 2:b, 
                 3,c},
             2: { 1: 'd',
                  2: 'g'},
             3: {1, 'e',
                 2, 'f',
                 3, 'g'}
                .....
               }*

我的代码:

list_1 = [1,2,3,4,5]

list_2 = ['a', 'b', 'c', 'd', 'e', 'f', 'g']

list_4= []

j= 1

while i <= len(list_1):

    list_3 = random.sample(list_2 , random.randint(0,len(list_2))

    for k in list_3:

        my_dict= { i: { j: k, 
                      }
                 }

        j+=1

    i+=1

    list_3 = random.sample(list_2 , random.randint(0,len(list_2))
    list_4.append(my_dict)

每次对list_3进行迭代后,第j个值应递增,并继续添加新的第j个键+值(k) 在list_3的循环结束之后,应创建另一个示例列表(list_3),并且在新的ith键中重复上述示例列表,并将其添加到字典中。

如果没有人可以修复代码,我没有得到所需的结果,并且需要帮助。

谢谢!

3 个答案:

答案 0 :(得分:0)

您将在循环的每次迭代中覆盖my_dict。您只需要使用键i添加新的下标:

list_1 = [1,2,3,4,5]
list_2 = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
my_dict = {}
for i in list_1:
    list_3 = random.sample(list_2 , random.randint(0,len(list_2)))
    my_dict[i] = dict(enumerate(list_3, 1))

答案 1 :(得分:0)

因此,您有一个keys列表和一个values列表,并且想要创建一个字典,其中每个key都有一个条目,其中每个{{1 }}是一本字典,从key中随机选择作为值和顺序数字键,从1开始。

values

此:

  • 定义字典;
    keys = [1, 2, 3, 4, 5] values = ['a', 'b', 'c', 'd', 'e', 'f', 'g'] result = { k: {n: v for n, v in enumerate(random.sample(values, random.randint(0, len(values))), 1) } for k in keys }
  • 带有result= {}中每个键k的条目;
    keys
  • 每个字典都具有从1开始的枚举的键和值;
    result= {k: {} for k in keys}
  • 其中的值是来自{n: v for n, v in enumerate([], 1)}的随机样本;
    values
  • 长度在0到random.sample(values, _)中的所有项目之间。
    values

Python允许您直接将枚举转换为字典:

random.sample(random.randint(0, len(values)))

答案 2 :(得分:0)

您可以尝试以下操作:

ROW_NUMBER