【问题标题】:How to add values to existing dictionary key Python如何将值添加到现有的字典键 Python
【发布时间】:2013-09-19 23:58:52
【问题描述】:

我正在尝试创建一个接受四个参数的函数:键名、开始时间、结束时间和字典。我必须从开始时间和结束时间创建一个元组,然后将其附加到元组列表中,因为我们将多次运行此函数。然后我试图将元组列表的某些部分放入某些键名。

我认为最好向您展示输出的样子:

courses = insertIntoDataStruct(“CS 2316”, “1505”, “1555”, courses)  
courses = insertIntoDataStruct(“CS 2316”, “1405”, “1455”, courses)  
courses = insertIntoDataStruct(“CS 2316”, “1305”, “1355”, courses)  
courses = insertIntoDataStruct(“CS 4400”, “1405”, “1455”, courses)  
courses = insertIntoDataStruct(“CS 4400”, “1605”, “1655”, courses)    
print(courses)  


{'CS 2316': [(1505, 1555), (1405, 1455), (1305, 1355)], 'CS 4400': [(1405, 
1455), (1605, 1655)]}

这是我目前的代码:

aDict = {}
tupleList = []
def insertIntoDataStruct(name,startTime,endTime,aDict):       
    timeTuple = tuple([startTime, endTime])  
    tupleList.append(timeTuple)
    aDict[name] = tupleList
    return aDict

我知道这会给我一个字典,其中每个键都有所有值,但我不知道如何制作它,以便我添加的每个值都将添加到字典中,如输出所示。我已经尝试了很多随机的东西,但我仍然坚持这一点。 :(

【问题讨论】:

    标签: python dictionary tuples


    【解决方案1】:

    试试这个:

    def insertIntoDataStruct(name,startTime,endTime,aDict):
        if not name in aDict:
            aDict[name] = [(startTime,endTime)]
        else:
            aDict[name].append((startTime,endTime))
    

    现在定义你的字典:

    courses = {}
    

    并开始添加课程:

    insertIntoDataStruct("CS 2316", "1505", "1555", courses)
    insertIntoDataStruct("CS 2316", "1405", "1455", courses)
    insertIntoDataStruct("CS 2316", "1305", "1355", courses)
    insertIntoDataStruct("CS 4400", "1405", "1455", courses)
    insertIntoDataStruct("CS 4400", "1605", "1655", courses)
    

    【讨论】:

    • +1 干净、优雅的解决方案。此外,您不需要调用return aDict,因为courses 是通过引用传递的,并且在没有return 的情况下将保持填充状态。
    【解决方案2】:

    您可能想要使用默认字典。

    from collections import defaultdict
    
    def insertIntoDataStruct(name,startTime,endTime,aDict):
        aDict[name].append((int(startTime), int(endTime)))
        return aDict
    
    courses = defaultdict(list)
    courses = insertIntoDataStruct("CS 2316", "1505", "1555", courses)
    courses = insertIntoDataStruct("CS 2316", "1405", "1455", courses)
    courses = insertIntoDataStruct("CS 2316", "1305", "1355", courses)
    courses = insertIntoDataStruct("CS 4400", "1405", "1455", courses)
    courses = insertIntoDataStruct("CS 4400", "1605", "1655", courses)
    
    
    print courses == {'CS 2316': [(1505, 1555), (1405, 1455), (1305, 1355)], 'CS 4400': [(1405, 1455), (1605, 1655)]}
    print courses
    

    也许你甚至不需要函数。

    from collections import defaultdict
    courses = defaultdict(list)
    courses["CS 2316"].append((int("1505"), int("1555")))
    courses["CS 2316"].append((int("1405"), int("1455")))
    courses["CS 2316"].append((int("1305"), int("1355")))
    courses["CS 4400"].append((int("1405"), int("1455")))
    courses["CS 4400"].append((int("1605"), int("1655")))
    

    【讨论】:

      猜你喜欢
      • 2020-04-12
      • 2013-10-11
      • 1970-01-01
      • 1970-01-01
      • 2017-01-04
      • 2017-12-17
      • 2020-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多