Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.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 对集合使用.join()函数会错误地对其重新排序_Python_Python 3.x - Fatal编程技术网

Python 对集合使用.join()函数会错误地对其重新排序

Python 对集合使用.join()函数会错误地对其重新排序,python,python-3.x,Python,Python 3.x,我有一组按需要排序的字符(x): {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'} 但是,当我尝试使用.join()函数将它们转换回字符串时: return ' '.join(x) 正在对字符进行随机重新排序: 'c g e w i

我有一组按需要排序的字符(x):

{'a',
 'b',
 'c',
 'd',
 'e',
 'f',
 'g',
 'h',
 'i',
 'j',
 'k',
 'l',
 'm',
 'n',
 'o',
 'p',
 'q',
 'r',
 's',
 't',
 'u',
 'v',
 'w',
 'x',
 'y',
 'z'}
但是,当我尝试使用.join()函数将它们转换回字符串时:

return ' '.join(x)
正在对字符进行随机重新排序:

'c g e w i z n t l a q h p d f v m k b x u r j o y'

关于这里发生了什么有什么想法吗?

集合和字典是无序的(Python 3.7之前)。它们的确切实现涉及哈希表,可能有点复杂。但是,只需说明,将元素放入集合的顺序并不决定它们的存储顺序

您可以使用
OrderedDict
,或者您可以将集合转换为列表、排序,然后从列表开始执行操作。

集合并不“承诺”维持顺序,有时它们会这样做,但它们不应该依赖于它来使用。此外,考虑使用以下内容:

alpha = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
然后:

但是如果您只关心它是按字母顺序排列的,并且希望使用集合,则可以在使用联接函数之前强制对其进行排序

return " ".join(sorted(x))

祝你好运

在Python-3.7之前,集合没有排序,因此它可以以任何可能的顺序返回元素。如果要确保集合保留其插入顺序,可以使用
OrderedSet
。如果确实需要排序顺序,可以使用
return'。join(sorted(x))
@WillemVanOnsem
设置
对象仍然不可用ordered@WillemVanOnsem当然,我现在只使用一个
dict
:)
OrderedSet
。python中没有内置这样的东西。类似地,
set
在Python3.7中仍然不是按插入顺序的(尽管字典是按插入顺序的)。
return " ".join(sorted(x))