Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将字典键(元组)及其值组合成一个字符串?_Python - Fatal编程技术网

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

Python 如何将字典键(元组)及其值组合成一个字符串?,python,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: 我不知

我现在有字典:

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:

我不知道这是否是最具Python风格的解决方案,但请尝试以下方法:

str(tuple(_ + (matrix[_],) for _ in matrix))

请注意,您的键是
元组
,它们是不可变的,因此无法修改,因此您需要先将它们解压缩,然后与字典值联接

你可以用

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)

根据您目前的工作:

lst = []
for i,j in matrix.items():
  lst.append((i[0],i[1],j))
result = ",".join( repr(e) for e in lst )     

或使用
%s

print(','.join(["(%s,%s,%s)"%(*k,v) for k,v in matrix.items()]))
或:

或者,如果版本不高于python 3.5:

print(','.join(["(%s,%s,%s)"%k+(v,) for k,v in matrix.items()]))
或:


您需要的基本操作是:

[k + (v,) for k, v in matrix.items()]
要以特定方式打印,您可能需要:

print(', '.join(str(k + (v,)) for k, v in matrix.items()))

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

您的方法将使它们保持正确的顺序。代码中唯一需要更改的是将元组拆分为其子部分:

>>> result = []
>>> for (x, y), z in matrix.items():
        result.append((x, y, z))

>>> print result
[(0, 0, 1), (1, 1, 1), (2, 2, 1)]

请包含您首先尝试的代码,以便我们知道您的位置。是否需要确切的输出,或者是否可以插入额外的空格而不产生问题?额外的空间可以让Python为您做更多的工作(无论哪种方式,成本都是相似的,只是稍微复杂一点的代码来避免空间)。我同意你应该;当您不愿意为相对简单的内容生成一个字符串时,要求人们充当代码编写服务是相当冒昧的。您确定要结果为字符串吗?或者元组列表?我承认你想要的字符串在括号中,所以我可能会删除这个答案。但是,我认为这是一种简单的方法,如果对任何人都有用,我会留下一点答案。请注意,您可以为单个元素命名,并避免完全使用嵌套的解包进行索引:
for(x,y),z in matrix.items():result.append((x,y,z))
(显然,最好使用自我记录的名称,而不仅仅是匿名的单字母名称)。
print(', '.join(str(k + (v,)) for k, v in matrix.items()))
>>> result = []
>>> for (x, y), z in matrix.items():
        result.append((x, y, z))

>>> print result
[(0, 0, 1), (1, 1, 1), (2, 2, 1)]