如何将字典键(元组)及其值组合到一个字符串中?

时间:2018-10-31 00:30:34

标签: python

我目前有字典:

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:

6 个答案:

答案 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()))

请注意,字典是无序的,因此结果的顺序是不确定的。