Python dict赋值为两个不同的查询返回相同的答案

时间:2017-03-14 23:21:58

标签: python dictionary

我有一个超级简单的程序,可以解析得分和时间数据。

orig = https://games.crossfit.com/competitions/api/v1/competitions/open/2017/leaderboards

orig等于该API调用的输出我将其用作此示例的粘贴值。如果将其粘贴到原始值

,那将会过于庞大
default_score = {1: '--',
             2: '--',
             3: '--',
             4: '--',
             5: '--',
             6: '--'}
for i in range(50):
    time = default_score
    rank = default_score
    print orig[0]['athletes'][i]['name']
    for j in range(2):
        time[j] = orig[0]['athletes'][i]['scores'][j]['scoredetails']['time']
        rank[j]= orig[0]['athletes'][i]['scores'][j]['workoutrank']

print rank
print time

我无法弄清楚为什么我没有得到排名和时间的独特价值。

我的结果是

Mathew Fraser
{0: '20', 1: '15', 2: '--', 3: '--', 4: '--', 5: '--', 6: '--'}
{0: '20', 1: '15', 2: '--', 3: '--', 4: '--', 5: '--', 6: '--'}
Richard Froning Jr.
{0: '26', 1: '16', 2: '--', 3: '--', 4: '--', 5: '--', 6: '--'}
{0: '26', 1: '16', 2: '--', 3: '--', 4: '--', 5: '--', 6: '--'}
Noah Ohlsen
{0: '50', 1: '5', 2: '--', 3: '--', 4: '--', 5: '--', 6: '--'}
{0: '50', 1: '5', 2: '--', 3: '--', 4: '--', 5: '--', 6: '--'}
Marcelo Bruno
{0: '37', 1: '37', 2: '--', 3: '--', 4: '--', 5: '--', 6: '--'}
{0: '37', 1: '37', 2: '--', 3: '--', 4: '--', 5: '--', 6: '--'}
....

api call

1 个答案:

答案 0 :(得分:0)

我认为时间和等级都指向相同的default_score字典。您需要复制默认字典。请参阅下面的示例

{1: 5, 2: '--', 3: '--', 4: '--', 5: '--', 6: '--'}
{1: 5, 2: '--', 3: '--', 4: '--', 5: '--', 6: '--'}

结果

default_score = {1: '--',
             2: '--',
             3: '--',
             4: '--',
             5: '--',
             6: '--'}

rank_copy = default_score.copy()
time_copy = default_score.copy()
rank_copy[1] = 5
print rank_copy
print time_copy

但是什么时候

{1: 5, 2: '--', 3: '--', 4: '--', 5: '--', 6: '--'}
{1: '--', 2: '--', 3: '--', 4: '--', 5: '--', 6: '--'}

结果

{{1}}