我目前有字典:
matrix = {(0, 0): 1, (1, 1): 1, (2, 2): 1}
我需要创建一个显示以下字符串:
(0,0,1),(1,1,1),(2,2,1)
如何将字典键(元组)和值连接在一起成为一个字符串?
我当时正在考虑将键放入列表中并将键添加到列表中,但是鉴于元组是不可变的,我不确定如何以正确的顺序添加键。
result = []
for i, j in matrix.items():
result.append(i)
for i in result:
答案 0 :(得分:1)
您的方法将使它们保持正确的顺序。您似乎需要更改代码的唯一一件事就是将元组拆分为多个子部分:
>>> result = []
>>> for (x, y), z in matrix.items():
result.append((x, y, z))
>>> print result
[(0, 0, 1), (1, 1, 1), (2, 2, 1)]
答案 1 :(得分:0)
我不知道这是否是最有效的解决方案,但请尝试以下方法:
str(tuple(_ + (matrix[_],) for _ in matrix))
答案 2 :(得分:0)
请注意,您的密钥是tuples
,它们是不可变的,因此无法修改,因此您需要先解压缩它们,然后再与字典值结合在一起。
您可以使用
matrix = {(0, 0): 1, (1, 1): 1, (2, 2): 1}
# *k unpack keys
print(','.join("({},{},{})".format(*k,v) for k,v in matrix.items()))
# output,
# (0,0,1),(1,1,1),(2,2,1)
答案 3 :(得分:0)
到目前为止,您的工作已经完成:
lst = []
for i,j in matrix.items():
lst.append((i[0],i[1],j))
result = ",".join( repr(e) for e in lst )
答案 4 :(得分:0)
或使用%s
:
print(','.join(["(%s,%s,%s)"%(*k,v) for k,v in matrix.items()]))
或者:
print(','.join([str((*k,v)) for k,v in matrix.items()]))
或者版本不高于python 3.5:
print(','.join(["(%s,%s,%s)"%k+(v,) for k,v in matrix.items()]))
或者:
print(','.join([str(k+(v,)) for k,v in matrix.items()]))
答案 5 :(得分:0)
您要寻找的基本操作是:
[k + (v,) for k, v in matrix.items()]
要以特定方式打印,可能需要:
print(', '.join(str(k + (v,)) for k, v in matrix.items()))
请注意,字典是无序的,因此结果的顺序是不确定的。