Python 将列表列表转换为可以转换为Json的字典
我有一个Python列表,需要转换为字典或json,我的列表如下所示:Python 将列表列表转换为可以转换为Json的字典,python,json,dictionary,Python,Json,Dictionary,我有一个Python列表,需要转换为字典或json,我的列表如下所示: [ ['user1', 'Administration', 100], ['user2', 'Development', 170], ['user2', 'Testing', 30], ['user3', 'Administration', 95], ['user3', 'Development', 400], ['user3', 'Testing', 200] ] 我需要这个看起来像这样: { "us
[
['user1', 'Administration', 100],
['user2', 'Development', 170],
['user2', 'Testing', 30],
['user3', 'Administration', 95],
['user3', 'Development', 400],
['user3', 'Testing', 200]
]
我需要这个看起来像这样:
{
"user1": {
"Administration": 100
},
"user2": {
"Development": 170,
"Testing": 30
},
"user3": {
"Administration": 95,
"Development": 400,
"Testing": 200
}
}
最好的方法是什么?我当前的循环覆盖了密钥,如果用户已经存在,我需要它添加相应的属性
谢谢大家! 使用dict.setdefault
例:
输出:
{'user1': {'Administration': 100}, 'user2': {'Development': 170, 'Testing': 30}, 'user3': {'Administration': 95, 'Development': 400, 'Testing': 200}}
使用dict.setdefault
例:
输出:
{'user1': {'Administration': 100}, 'user2': {'Development': 170, 'Testing': 30}, 'user3': {'Administration': 95, 'Development': 400, 'Testing': 200}}
使用collections.defaultdict对象的简短方法:
输出:
使用collections.defaultdict对象的简短方法:
输出:
为了便于理解
输出:
{'user1': {'Administration': 100}, 'user2': {'Development': 170, 'Testing': 30}, 'user3': {'Administration': 95, 'Development': 400, 'Testing': 200}}
为了便于理解
输出:
{'user1': {'Administration': 100}, 'user2': {'Development': 170, 'Testing': 30}, 'user3': {'Administration': 95, 'Development': 400, 'Testing': 200}}
您还可以使用itertools.groupby:
输出:
{'user1': {'Administration': 100}, 'user2': {'Development': 170, 'Testing': 30}, 'user3': {'Administration': 95, 'Development': 400, 'Testing': 200}}
您还可以使用itertools.groupby:
输出:
{'user1': {'Administration': 100}, 'user2': {'Development': 170, 'Testing': 30}, 'user3': {'Administration': 95, 'Development': 400, 'Testing': 200}}
请显示您的努力我们能看到当前代码吗?请显示您的努力我们能看到当前代码吗?@kuro。谢谢,我没看见that@kuro. 谢谢,我没看到,非常感谢大家!这个解决方案比我尝试的方式简单得多。非常感谢大家!这个解决方案比我尝试的方式简单得多。
{'user2': {'Testing': 30}, 'user3': {'Testing': 200}, 'user1': {'Administration': 100}}
from itertools import groupby as gb
d = [['user1', 'Administration', 100], ['user2', 'Development', 170], ['user2', 'Testing', 30], ['user3', 'Administration', 95], ['user3', 'Development', 400], ['user3', 'Testing', 200]]
result = {a:{c:d for _, c, d in b} for a, b in gb(d, key=lambda x:x[0])}
{'user1': {'Administration': 100}, 'user2': {'Development': 170, 'Testing': 30}, 'user3': {'Administration': 95, 'Development': 400, 'Testing': 200}}