Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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_Sorting_Dictionary - Fatal编程技术网

Python 如何按键对词典中的词典进行排序

Python 如何按键对词典中的词典进行排序,python,sorting,dictionary,Python,Sorting,Dictionary,你能帮我一点忙吗?我的python代码有些地方卡住了。 如果我的英语不好,我很抱歉,但我会尽力的 dict = {2: {20.934144973754883: 'red'}, 8: {36.431842803955078: 'blue'}, 9: {27.323692321777344: 'blue'}, 15: {37.194934844970703: 'blue'}, 18: {19.550689697265625: 'red'}} y = []

你能帮我一点忙吗?我的python代码有些地方卡住了。 如果我的英语不好,我很抱歉,但我会尽力的

dict = {2: {20.934144973754883: 'red'},
      8: {36.431842803955078: 'blue'},
      9: {27.323692321777344: 'blue'},
     15: {37.194934844970703: 'blue'},
     18: {19.550689697265625: 'red'}}
y = []
x = []

for key,value in dict.items():
    y.append(key)

    for val,color in value.items():
        x.append(val)
        c.append(color)

plt.scatter(sorted(x),sorted(y),color = c)
为了把数据排成一行,我对x和y进行了排序。但是当我把情节分散的时候,颜色哪里错了。我知道那是因为我没有把颜色分类。但如果我试图对它们进行分类,我就失败了。由于变量值:

value = {20.934144973754883: 'red'}
        {36.431842803955078: 'blue'}
        {27.323692321777344: 'blue'}
        {37.194934844970703: 'blue'}
        {19.550689697265625: 'red'}
你不能把它分类。 请帮帮我,我不知道该怎么办

为了把数据排成一行,我对x和y进行了排序。但是当我把情节分散的时候,颜色哪里错了

您的预期结果不清楚,但我的印象是您对直接绘制数据感兴趣

我知道那是因为我没有把颜色分类

如果您只对绘制字典中的数据感兴趣,则无需排序,因为我们可以并行地解包字典

但如果我试图对它们进行分类,我就失败了

现在,您正在单独解包部分数据,这会导致数据不对齐。您可能会错误地尝试对数据进行排序以纠正这种不对齐

相反,尝试使用
for
循环或列表理解解包(注意
d
用于代替内置
dict
变量):

或者,您可以使用以下内容替换最后两行,使用以下内容并行解压所有
x、y、c
数据:

实现“使用”使对键进行排序成为可能,并可能产生所需的结果:

import collections

d = collections.OrderedDict()

d[2]  = {20.934144973754883: 'red'}
d[8]  =  {36.431842803955078: 'blue'}
d[9]  = {27.323692321777344: 'blue'}
d[15] = {37.194934844970703: 'blue'}
d[18] = {19.550689697265625: 'red'}

y = []
x = []

for key,value in d.items():
    y.append(key)

    for val,color in value.items():
        x.append(val)
        c.append(color)

plt.scatter(sorted(x),sorted(y),color = c)
生成此输出:


这个问题有点难理解,至少对我来说是这样。你能分享一下这个示例的输出吗?我相信在Python3.6中字典是唯一可以排序的。有一些方法可以避免这种情况,比如使用
collection
中的
orderedict
,请参阅。在您的情况下,字典中的值将是第二个字典。在3.6中对字典进行排序是C实现的副作用,不应依赖它。添加
C=[]
以避免错误。我注意到最后一个红点与数据不相关。我希望在
(19.5..18)
上有一个点,而在
(37,18)
周围有一个点。
xs, ys, cs = zip(*data)
plt.scatter(xs, ys, color=cs)
import collections

d = collections.OrderedDict()

d[2]  = {20.934144973754883: 'red'}
d[8]  =  {36.431842803955078: 'blue'}
d[9]  = {27.323692321777344: 'blue'}
d[15] = {37.194934844970703: 'blue'}
d[18] = {19.550689697265625: 'red'}

y = []
x = []

for key,value in d.items():
    y.append(key)

    for val,color in value.items():
        x.append(val)
        c.append(color)

plt.scatter(sorted(x),sorted(y),color = c)