将输出发送到字典

时间:2018-11-24 23:12:30

标签: python

我只是这个的初学者,但正在寻求帮助。我正在尝试制作一款即席游戏,并且有一个纸牌生成器(摘自:https://math.stackexchange.com/questions/1303497/what-is-the-algorithm-to-generate-the-cards-in-the-game-dobble-known-as-spo) 我正在尝试将打印输出发送到词典,在该词典中,卡号是键,并且在生成的卡ID中将其作为值列出。

这是我到目前为止所拥有的:

nIm = 4
n = nIm - 1
r = range(n)
rp1 = range(n+1)
c = 0
a=dict={}


# First card
c+=1
for i in rp1:
    a['Card %2d:' %c]=(i+1)
    print(a) 
print()

# n following cards
for j in r:
    if j not in r:    
        c = c+1 
    a['Card %2d:' %c]=(1) 
    print(a)
    for k in r:
        a['Card %2d:' %c]=(n+2 + n*j +k) 
        print(a)
    print()

有人知道我该怎么做吗? 预先感谢!

2 个答案:

答案 0 :(得分:0)

我好像您正在使用以下语句将键/值对设置为字典确定:

a['Card %2d:' %c]=(i+1)

    a['Card %2d:' %c]=(n+2 + n*j +k)

我看不到您提到的ID。假设您的ID位于名为ids的列表中,则可以将其添加到字典中,如下所示:

a['ids'] = ids

这是a之后的样子。

print(a) # {'Card  2:': 4, 'ids': [1, 2, 3, 4, 5]}

假设为ids = [1,2,3,4,5]

答案 1 :(得分:0)

您非常接近它。对于每张卡,您首先需要在dict中创建一个空集作为值,然后调用该集的“添加”方法以将每个ID添加到该集。

# First card
c+=1
a['Card %2d:' %c] = set()
for i in rp1:
    a['Card %2d:' %c].add(i+1)
    print(a) 
print()

# n following cards
for j in r:
    if j not in r:    
        c = c+1 
    a['Card %2d:' %c] = {1}
    print(a)
    for k in r:
        a['Card %2d:' %c].add(n+2 + n*j +k) 
        print(a)
    print()

此外,在开头有“ a = dict = {}”的地方,您可以只说一个

a = {}

a = dict()

看起来不错!稍后,您可以查看collections模块中的“ defaultdict”,当字典中尚不存在该键时,可以使用该模块自动创建一个空集(或其他类型的值)作为默认值。但是你所拥有的很好。