Omi*_*pha 10 python dictionary tuples
我正在尝试创建一个函数,它接受四个参数:键名,开始时间,结束时间,然后是字典.我必须在开始时间和结束时间之外创建一个元组,然后将其附加到元组列表中,因为我们将多次运行此函数.然后我试图将元组列表的某些部分放到某些键名.
我认为如果我向你展示输出结果会更好:
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)]}
Run Code Online (Sandbox Code Playgroud)
到目前为止这是我的代码:
aDict = {}
tupleList = []
def insertIntoDataStruct(name,startTime,endTime,aDict):
timeTuple = tuple([startTime, endTime])
tupleList.append(timeTuple)
aDict[name] = tupleList
return aDict
Run Code Online (Sandbox Code Playgroud)
我知道这会给我一个字典,每个键都有所有值,但我不知道如何制作它,以便我添加的每个值将被添加到字典中,如输出中所示.我已经尝试了很多随机的东西,但我仍然坚持这个.:(
Poo*_*ali 15
试试这个:
def insertIntoDataStruct(name,startTime,endTime,aDict):
if not name in aDict:
aDict[name] = [(startTime,endTime)]
else:
aDict[name].append((startTime,endTime))
Run Code Online (Sandbox Code Playgroud)
现在定义你的dict:
courses = {}
Run Code Online (Sandbox Code Playgroud)
并开始添加课程:
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)
Run Code Online (Sandbox Code Playgroud)
您可能要使用defaultdict。
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
Run Code Online (Sandbox Code Playgroud)
也许您甚至不需要功能。
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")))
Run Code Online (Sandbox Code Playgroud)