我正在尝试创建一个程序,以显示每个频道在一天中的观看人数,以及哪些节目最受欢迎。我有两个文件,一个显示测量值(http://www.csc.kth.se/~vahid/DD1310/P/tittardata.txt),其中第一个数字是时间戳,斜杠后的数字是频道。另一个文件(http://www.csc.kth.se/~vahid/DD1310/P/program.txt)显示了每个频道当天的内容。 我现在要弄清楚的是如何使第一个文件中的时间戳与第二个文件中的正确标题最匹配。到目前为止,我已经创建了一个字典,该字典将标题作为关键字,并将相应的时间戳记作为值。 例如 我有
{"Aktuellt" : [21.07/1, 21.22/1]}
我还从第一个文件创建了一个列表,该列表计算了一个时间戳出现的次数,当打印列表时,它看起来像这样
[['19.37/2', 34], ['19.52/2', 34], ['21.07/1', 57], ['21.22/1', 48], ...
我想做的是将时间戳与正确的标题相匹配,以使列表变为
['Aktuellt', 57], ['Aktuellt', 48]
有可能吗,或者我应该做些其他事情才能呈现“前10名演出”
答案 0 :(得分:0)
您可以将时间戳记用作键,将标题用作值:
initial_dict = {"Aktuellt" : [21.07/1, 21.22/1]}
d = {e : k for k, v in initial_dict.items() for e in v}
# d = {'21.07/1' : "Aktuellt", '21.22/1': "Aktuellt"}
l = [['19.37/2', 34], ['19.52/2', 34], ['21.07/1', 57], ['21.22/1', 48]]
[[d[f], s] for f, s in l if f in d]
输出:
[['Aktuellt', 57], ['Aktuellt', 48]]
如果您想获得前十名,可以这样做:
top_10 = sorted(l, key=lambda x: x[1])[-10:]
top_10_with_title = [[d[f], s] for f, s in first_10 if f in d]