如何将一系列随机数字典添加到单个列表

时间:2019-01-29 21:52:30

标签: python pygame

我正在尝试创建一个列表,其中包含随机生成的颜色的字典。因此,例如,列表的第一个字典将是颜色0,其值为255、255、255。我收到“ color {x}”的语法错误,其中python表示应为整数或拼接,但不是字符串。删除颜色部分给我另一个错误,其中python表示set对象没有格式属性。

这是使用pygame 1.9.4和python 3.7,而我一般来说对python编程还是比较陌生的。我曾尝试弄乱“ color {x}”部分,但之前的thread具有类似的功能,因此,我只是复制了语法以查看是否可以使用它。

colors = []
colorLength = len(colors)
for x in range(3):
    colors["color{x}".format(x)]= random.randint(0,255), 
           random.randint(0,255), random.randint(0,255)
    #colors.append()
else:
    print(colorLength)

我正在尝试使列表颜色容纳3个字典(目前,计划在工作时扩展列表),其中包含随机生成的颜色。

2 个答案:

答案 0 :(得分:0)

您正在将listdictionary混淆-列表就是...列表-可索引的事物集合。您需要一本字典-在 key 下存储一个 value 的字典。字典是由colors = {}创建的。

另一个错误是使用带有命名参数的str.format()-您可以省略x或像这样修复它:

for xxx in range(3):
    # x is the name inside the {x} and it should be replaced by xxx
    colors["color{x}".format( x = xxx)] = ...

如果您只是使用

for xxx in range(3):
    colors["color{}".format(xxx)] = ...

format将在位置上替换。.第一个{}占位符替换为1st中的format( 1st, 2nd, ...)值。

阅读:


固定代码:

import random 

colors = {} # create empty dictionary

for x in range(3):
    # random.choices creates k random values from the given iterable in one go
    colors["color{}".format(x)] = random.choices(range(0,256), k =3) 

print(colors) 

输出:

{'color0': [189, 5, 3], 'color1': [57, 218, 56], 'color2': [64, 150, 255]}

Doku:


如果您真的需要元组,则可以使用tuple( random.choices(range(0,256), k =3) )

答案 1 :(得分:0)

如果我理解正确,您实际上想要一个元组字典。像这样:

import numpy as np
a = {i: tuple(np.random.randint(256, size=3)) for i in range(3)}

print(a)
{0: (65, 168, 140), 1: (193, 85, 66), 2: (28, 25, 7)}