我有一本列表字典:
d = {'a': ['Adam', 'Book', 4], 'b': ['Bill', 'TV', 6, 'Jill', 'Sports', 1, 'Bill', 'Computer', 5], 'c': ['Bill', 'Sports', 3], 'd': ['Quin', 'Computer', 3, 'Adam', 'TV', 3], 'e': ['Quin', 'TV', 2, 'Quin', 'Book', 5], 'f': ['Adam', 'Computer', 7]}
每个列表表示用户使用给定对象的次数。例如,对于列表'a',它显示Adam
每周读取Book
4
次。在“b”中,Bill
每周观看TV
6
次,Jill
每周播放sports
次。你知道吗
我想在每个列表中找出一个人做某事的总次数。你知道吗
在本例中,输出如下:
a: Adam 4
b: Bill 11, Jill 1
c: Bill 3
d: Quin 3, Adam 3
e: Quin 7
f: Adam 7
不一定是那种精确的格式,但是类似的。你知道吗
目前,我尝试使用Counter,但它只计算人名,而不计算与之相关的数字。我试过只返回名字和数字,但对于超过1个名字的列表来说,这并不管用,因为有些列表甚至总共有6个名字。你知道吗
感谢您的帮助!谢谢您!你知道吗
如果您真的想对数据结构执行此操作,可以执行以下操作:
然而,更好的办法是将数据存储在合理的数据结构中。在列表中存储信息的规则类似于“每个列表以三个一组的形式出现,每三个列表中的第一个是名称等”,这使得处理数据变得笨拙和违反直觉。相反,如果您将数据存储为:
然后,你可以这样回答问题:
这也有许多其他好处:你可以通过做
d["a"]["Adam"]["Book"]
(或者,如果你不确定“亚当”或“书”在那里,d["a"].get("Adam", {}).get("Book", 0)
)来找出亚当在“a”中读了多少遍书。根据这一清单进行的其他计算也是可能和有用的。你知道吗我认为
defaultdict
和列表切片在这里很有用。。。你知道吗一个
Counter
也可以工作,但是它直到python2.7才被引入,而defaultdict
是python2.5兼容的,并且在这个实例中提供相同的功能。你知道吗尽管如其他人所说,这似乎是一个非常奇怪的数据结构,您正在使用。。。你知道吗
这将产生所需的结果:
输出:
相关问题 更多 >
编程相关推荐