在列表中查找值的元组

3 投票
5 回答
1884 浏览
提问于 2025-04-16 05:47

我有一个元组的列表,如下所示:

mylist = [ (user1, 23, 32), (user1, 23, 34), (user3, 34, 34), (user2, 34, 45), (user1, 45,23),(user2, 56, 56), (user5, 4,4)]

我需要找出每个用户的平均时间。我的问题是,我不知道有多少个用户以及他们的值是什么。所以我无法进行

for item in mylist:
    if item[0] == 'user1':
       new_list.append( ( item1, item2))

我该如何获取像这样的值

user1 = [ (23,32), (23,34), (45,23)]
user2 = [(34, 45), (56,56)]
usre3 = [(34,34)]

谢谢

5 个回答

0

这段代码的意思是……

首先,它定义了一些变量,这些变量就像是用来存储信息的小盒子。你可以把它们想象成一个个标签,里面放着不同的数据。

接下来,代码中有一些操作,这些操作就像是给这些小盒子里的东西进行处理。比如说,你可能会把一个盒子里的东西加上一个数字,或者把两个盒子里的东西合在一起。

最后,代码会输出一些结果,这就像是把处理后的信息展示出来,让你看到最终的结果是什么。

总之,这段代码就是在做一些数据的存储和处理,最后把结果给你看。希望这样的解释能让你更容易理解!

from collections import defaultdict
h=defaultdict(list)
mylist = [ ("user1", 23, 32), ("user1", 23, 34), ("user3", 34, 34), ("user2", 34, 45), ("user1", 45,23),("user2", 56, 56), ("user5", 4,4)]
for item in mylist:
   h[item[0]].append(item[1:])
print h
2

显然,你需要一个字典,对吧?一种方法可以这样做:

results = {}
for user, val1, val2 in mylist:
    if user not in results:
        results[user] = []
    results[user].append((val1, val2))

不过,得益于从2.5版本开始引入的 collections.defaultdict,我们可以把这个过程简化:

import collections

results = collections.defaultdict(list)
for users, val1, val2 in mylist:
    results[user].append((val1, val2))
4

在编程中,有时候我们需要让程序根据特定的条件来做不同的事情。这就像是给程序设定了一些“规则”。如果满足这些规则,程序就会执行某些操作;如果不满足,程序就会执行其他操作。

比如说,想象一下你在做一个游戏,游戏里有一个角色需要根据玩家的选择来行动。如果玩家选择“攻击”,角色就会攻击;如果选择“防御”,角色就会防御。这里的“选择”就是条件,而角色的行动就是根据这些条件来决定的。

在代码中,我们通常使用“如果”这样的语句来实现这个功能。比如说:

>>> from collections import defaultdict    
>>> d = defaultdict(list)
>>> for user, *items in mylist:
    d[user] += items,


>>> d
defaultdict(<class 'list'>, {'user5': [[4, 4]], 'user2': [[34, 45], [56, 56]], 'user3': [[34, 34]], 'user1': [[23, 32], [23, 34], [45, 23]]})

这段代码的意思是:如果条件成立,就执行某个操作;如果条件不成立,就执行另一个操作。这种方式让程序变得更加灵活,可以根据不同的情况做出不同的反应。

撰写回答