这是我的元组
(0, 7, 4)
(1, 7, 4)
(2, 7, 4)
(3, 7, 4)
(0, 4, 1)
(0, 4, 3)
(0, 6, 4)
我想将其转换为字典作为示例
{0:(7,4), (4, 1), (4, 3), (6, 4), 1: (7, 4), 2:(7, 4), ....}
基本上,元组的第一个元素是键,第二个和第三个元素是值。
元组是使用:
生成的for i in range(len(vertices)):
#print(i)
for j in edges:
d= (i, j[0], j[1])
print(d)
答案 0 :(得分:3)
您可以使用以下循环将列表追加到列表中:
d = {}
for k, *v in l:
d.setdefault(k, []).append(tuple(v))
所以给定:
l = [
(0, 7, 4),
(1, 7, 4),
(2, 7, 4),
(3, 7, 4),
(0, 4, 1),
(0, 4, 3),
(0, 6, 4)
]
d
将变为:
{0: [(7, 4), (4, 1), (4, 3), (6, 4)], 1: [(7, 4)], 2: [(7, 4)], 3: [(7, 4)]
答案 1 :(得分:0)
而不是这样做
print ((i, j[0], j[1]))
您也可以
dict[i] = (j[0], j[1])
但是,这不适用于重复索引。因此,让我想到一种更好的方法...
复习后,方法是使用setdefault
(如先前在另一个答案中所述),为了提供与其他答案不同的内容,我展示了很长的路要走:
dictionary = d()
for i in range(len(vertices)):
for j in edges:
if i in d:
d[i].append((j[0], j[1]))
else:
d[i] = (j[0], j[1])
-----改进了哪些功能----
dictionary = dict()
for i in range(len(vertices)):
for j in edges:
d= (i, j[0], j[1])
dictionary[i]=[]
#print(d)
if i in dictionary :
#print(dictionary[i])
dictionary[i].append((j[0], j[1]),)
else:
dictionary[i] = (j[0], j[1])
print(dictionary)
答案 2 :(得分:0)
尝试一下:
from itertools import groupby
a = [(0, 7, 4), (1, 7, 4), (2, 7, 4), (3, 7, 4), (0, 4, 1), (0, 4, 3), (0, 6, 4)]
l={}
for i,g in groupby(a, lambda x:x[0]):
l[str(i)] = []
for v in g:
l[str(i)].append(v[1:])
答案 3 :(得分:0)
我不确定您在this comment中发布的代码是否正确,但是可以直接在循环内部填充字典
require("js/inc/globalDefines.js");
答案 4 :(得分:0)
这也应该起作用
DELETE FROM person_address WHERE id IN (
SELECT address_id
FROM person_address
WHERE person_address.person_id < 100
GROUP BY address_id
HAVING count(*) > 1
)