擅长:python、mysql、java
<p>在您最初的方法中,当您执行<code>for key in dict_input:</code>操作时,您正在迭代计数器的键,因此您将最终创建一个等于计数器中键长度的字符串,正如您在输出中观察到的<code>((((()</code>。你知道吗</p>
<p>此外,字典仅来自Python3.6+,因此您无论如何都不能遍历键,这些键可以无序地重新创建原始字符串。你知道吗</p>
<p>相反,一旦创建了计数器,就需要遍历每个字符,并根据该字符的计数是1还是更大,将<code>(</code>或<code>)</code>添加到字符串中</p>
<p>同样对于带引号的打印,可以使用f字符串或字符串格式返回带引号的输出</p>
<pre><code>from collections import Counter
def duplicate_encode(word):
counter = Counter(word)
#Add ( if the count of character is 1, else add )
output = ''.join('(' if counter.get(c) == 1 else ')' for c in word)
#Return a f-string with single quotes around it
return f"'{output}'"
#Or use string formatting
#return "'{}'".format(output)
print(duplicate_encode("binaryy"))
</code></pre>
<p>输出将是</p>
<pre><code>'((((())'
</code></pre>