我有一组元组:
users = set(("test@a.com","password"),("test@b.com","password"))
但可以简化为一组......以及一个元组列表:
licences = [("test@a.com","22"),("test@a.com","23"),("test@b.com","12")]
对于列表的每个条目,用户名可以使用不同的"许可证"重复。值。
我需要建立一个这样的词典列表:
[{"user":"test@a.com", "licences":["22","23"]},{"user":"test@b.com", "licences":["12"]}]
到目前为止,我所做的是:
licenzadiz = []
for num,user in enumerate(users):
licenzadiz.append({'user': user[0], 'licences': []})
for num2,licence in enumerate(licences):
if user[0] == licence[0]:
licenzadiz[num]['licences'].append(licence[1])
运作良好。但我想知道我的问题是否有更优雅的解决方案。
答案 0 :(得分:0)
$fp = popen("tail ".$file, "r");
我猜......我想
答案 1 :(得分:0)
你可以使用嵌套的默认dicts:
from collections import defaultdict
items = [('A','1'),('A','3'),('A','2'),
('B','0'),('B','4'),('B','-1'),
('C','7'),('C','6'),('C','12')]
d = defaultdict(lambda: defaultdict(list))
for use,lic in items:
d[use]['username'] = use #<-- Overwrites each time an already known key is found, but thats ok
d[use]['licence'].append(lic)
#Just for printout
for use in d:
print d[use]
print d[use]['username']
print d[use]['licence']
输出:
defaultdict(<type 'list'>, {'username': 'A', 'licence': ['1', '3', '2']})
A
['1', '3', '2']
defaultdict(<type 'list'>, {'username': 'C', 'licence': ['7', '6', '12']})
C
['7', '6', '12']
defaultdict(<type 'list'>, {'username': 'B', 'licence': ['0', '4', '-1']})
B
['0', '4', '-1']