python - 如何再次将其转换为元组键值列表?

标签 python python-3.x list jupyter-notebook tuples

我要改造它:

[('user1', 10),('user2',2),('user2',24),('user1',10),('user3',15),('user3',8)]

对它:

[('user2', 0.52), ('user3', 0.46), ('user1', 0.4)]

我需要添加值,按用户分组,应用 2% 的比率并按后代值排序。

我已经用库完成了解决方案,但我只想用条件来完成。我正在使用 jupyter 笔记本。

e = [('user1', 10),('user2',2),('user2',24),('user1',10),('user3',15),('user3',8)]
type(e)
users = ["user1","user2","user3"]
for u in users:
    value = 0
    for t in e:
        user = t[0]
        if user == u:
            value = value + t[1]
    finalValue = value* 0.02

我已经尝试了很多次来转换 "finalValue" 但我收到了消息

"'float' object is not iterable".

最佳答案

使用 collections.defaultdict

例如:

from collections import defaultdict

result = defaultdict(int)

data = [('user1', 10),('user2',2),('user2',24),('user1',10),('user3',15),('user3',8)]
for k, v in data:
    result[k] += v

result = {k: v*0.02 for k, v in result.items()}
#or result = [(k, v*0.02) for k, v in result.items()]
print(result)

输出:

{'user2': 0.52, 'user3': 0.46, 'user1': 0.4}

关于python - 如何再次将其转换为元组键值列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56438915/

相关文章:

python - 使用 pip 搜索时出错(pip 搜索停止工作)

python - 如何执行 ngram 到 ngram 关联

python - 检查命令是否有检查 "guild_only"

python-3.x - 如何修复 Nginx 连接到套接字失败(权限被拒绝)

列出 Powershell 中的所有设备、分区和卷

r - 来自数据帧列表 R 的多个箱线图

python - 垂直打印列表字典

python - 在特定条件下填充 Pandas 数据框列

Python 的 += 运算符和列表

python-3.x - 在列表 [data] = self.read() 中声明一个 python 变量?