我试图对从列表索引中提取的两个值进行排序,以便字典中的键始终是一对值 (x,y),使得 x < y。
给定,例如:
a = [['0', '1', '.5'], ['3', '1', '.7'], ['18','16','.4']]
我想要 d[(16, 18)] = .4,键中的所有数字按从小到大的顺序变成整数,值作为 float 。
这是我尝试过的:
a = [['0', '1', '.5'], ['3', '1', '.7'], ['18','16','.4']]
d = {}
for i in a:
b = sorted([int(i[0]), int(i[1])])
d[*b] = float(i[2])
我读到有关解包列表的信息 here并认为我会试一试,但我在星号上遇到 SyntaxEror。帮助?
最佳答案
您可以使用元组作为字典的索引,但它不是参数,因此星号语法不适用:
a = [['0', '1', '.5'], ['3', '1', '.7'], ['18','16','.4']]
d = {}
for (x,y,z) in a:
d[tuple(sorted(int(i) for i in (x, y)))] = float(z)
print(d)
关于python - 将列表解包为字典中的键——Python 3.4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31910692/