当我添加秒时,字典中的列表将被覆盖。列出字典

时间:2019-07-10 15:20:39

标签: python-3.x

我想将usernamedateTimeHold添加到bigData,如果已经存在,那么我只想添加dateTimeHold,否则添加username和{{1} }。

当我尝试使用此代码时,它只是被覆盖:

dateTimeHold

输出:

dateTimeHold = ('09-07-2019', '09.00 - 16.00', 'Red')
username = 'James'
bigData = {
        'Peter': [('08-07-2019', '06.00 - 07.00', 'Blue')], 
        'James': [('08-07-2019', '06.00 - 07.00', 'Blue')]
        }

if username != bigData.keys():
    listTime = []
    listTime.append(dateTimeHold)
    bigData[username] = listTime
else:
    bigData[username][listTime].append(dateTimeHold)

我想要它做什么:

{
    'Peter': [('08-07-2019', '06.00 - 07.00', 'Blue')], 
    'James': [('09-07-2019', '09.00 - 16.00', 'Red')]
}

2 个答案:

答案 0 :(得分:0)

正确的税法

if username not in bigData.keys():
    bigData[username] = [dateTimeHold]
else:
    bigData[username].append(dateTimeHold)

关于您的条件

使用if username != bigData.keys():始终是正确的,因为您的变量用户名中的任何内容都将与dict_keys(['Peter', 'James'])不同。

如果要查看列表中是否包含值,则应改用innot in

  • 'Peter' != bigData.keys() True
  • 'Peter' not in bigData.keys()错误

关于其他人

sintax不正确,您的else范围中不存在listTime。

除了检查adding new keys in dict的内容之外,还可以了解bigData[username][listTime].append(dateTimeHold)为何产生错误以及为什么bigData[username].append(dateTimeHold)有效。

答案 1 :(得分:0)

尝试代码,并查看行中的更正内容

dateTimeHold = ('09-07-2019', '09.00 - 16.00', 'Red')
username = 'James'
bigData = {'Peter': [('08-07-2019', '06.00 - 07.00', 'Blue')], 
           'James': [('08-07-2019', '06.00 - 07.00', 'Blue')}
if username not in bigData.keys(): #1. Check for the username in the keys
    listTime = []
    listTime.append(dateTimeHold)
    bigData[username] = listTime
else:
    bigData[username].append(dateTimeHold) #2.right way to append