javascript和python返回的相同数据结构在d3.js中的行为不同

javascript和python返回的相同数据结构在d3.js中的行为不同,javascript,python,d3.js,Javascript,Python,D3.js,当我从javascript源文件使用此数据结构时: var data = [{'x': 100, 'y': '65'}, {'x': 122, 'y': '57'}, {'x': 144, 'y': '101'}, {'x': 166, 'y': '87'}, {'x': 188, 'y': '8'}, {'x': 210, 'y': '180'}, {'x': 232, 'y': '132'}, {'x': 257, 'y': '190'}, {

当我从javascript源文件使用此数据结构时:

var data = [{'x': 100, 'y': '65'}, 
  {'x': 122, 'y': '57'}, 
  {'x': 144, 'y': '101'}, 
  {'x': 166, 'y': '87'}, 
  {'x': 188, 'y': '8'}, 
  {'x': 210, 'y': '180'}, 
  {'x': 232, 'y': '132'}, 
  {'x': 257, 'y': '190'}, 
  {'x': 276, 'y': '210'}, 
  {'x': 298, 'y': '150'}]
alert
我的主文件中显示的数据:

[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
此外,它还适用于:

alert(d3.max(data,function(d) { return d.count;}))
但当我使用python作为源文件并返回以下内容时:

 data = [{'x': 100, 'y': '65'}, 
  {'x': 122, 'y': '57'}, 
  {'x': 144, 'y': '101'}, 
  {'x': 166, 'y': '87'}, 
  {'x': 188, 'y': '8'}, 
  {'x': 210, 'y': '180'}, 
  {'x': 232, 'y': '132'}, 
  {'x': 257, 'y': '190'}, 
  {'x': 276, 'y': '210'}, 
  {'x': 298, 'y': '150'}]

abc=json.dumps(data)
print data
该警报也显示相同的内容:

[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
但这不起作用:

alert(d3.max(data,function(d) { return d.count;}))
这是我的全部代码

function add_py()
{
 var count = $( "#count" ).val();
    $.ajax({
        type: "get",
        url: "abc.py",
        data: {'count': count},
        datatype:"script",
        async: false,
        success: function(response) {
        var data= JSON.parse(response);

        showGraph(data);
        }, // success closed
        error:function(xhr,err)
        {
            alert("Error connecting to server, please contact system administator.");
        }
    })//ajax closed
}


function  showGraph(de)  {
  alert(de) 
  var mySVG = d3.select("body").append("svg");

  mySVG 
.attr("width", 500) 
.attr("height", 500);

  var heightScale = d3.scale.linear()
.domain([0, 963])
.range([0, 400]);

  alert(d3.max(de,function(d) { return d.count;}))
  var heightScale = d3.scale.linear()
  .domain([0, d3.max(de,function(d) { return d.count;})])
  .range([0, 400]);

  var myBars = mySVG.selectAll('circle')
.data(de)
.enter()
.append('svg:circle');

  myBars
.attr('r',20);

  myBars
.attr('cx',function(d,i) {return (i * 22) + 100;})
.attr('cy',function(d,i) {return 400 - heightScale(d.count);});

  }

我知道js中的数据和python文件中的数据的行为可能不同,但如何使python数据与js数据一样工作。提前感谢。

我不知道您是如何将JavaScript和Python混合在一起的,我假设您正在尝试从Python程序(可能通过服务器?)将
数据作为字符串加载。在这种情况下,您需要解析字符串并通过以下操作将其转换为JSON对象(即内部JavaScript对象):

data = JSON.parse(data)
在主文件中


编辑:还要确保Python程序将字典输出为有效的JSON格式,只需
print
ing它将不起作用,您需要类似
JSON.dumps(数据)的内容

预期的输出是什么?您有
x
的数值和
y
的字符串:如果您将它们更改为数字,可能会有所帮助。@Emanuele Bezzi编辑了我的代码,当数据来自python时,警报
警报(d3.max(de,函数(d){return d.count;})不起作用,但是当数据来自js@Emanuele-Bezzi时工作正常,对不起,我的错误应该是
警报(d3.max(de,function(d){return d.x;}))