GVKun编程网logo

在Python中将数据添加到嵌套列表(在python中将数据添加到嵌套列表的方法)

27

在本文中,我们将给您介绍关于在Python中将数据添加到嵌套列表的详细内容,并且为您解答在python中将数据添加到嵌套列表的方法的相关问题,此外,我们还将为您提供关于python–将嵌套列表值附加到

在本文中,我们将给您介绍关于在Python中将数据添加到嵌套列表的详细内容,并且为您解答在python中将数据添加到嵌套列表的方法的相关问题,此外,我们还将为您提供关于python – 将嵌套列表值附加到新列表中、Python中关于列表嵌套列表的处理、动态地将存储在php中的数据添加到嵌套的json中、在Python中复制嵌套列表的知识。

本文目录一览:

在Python中将数据添加到嵌套列表(在python中将数据添加到嵌套列表的方法)

在Python中将数据添加到嵌套列表(在python中将数据添加到嵌套列表的方法)

我有一个嵌套列表,例如:

nlist = [         [1, 2, 3],          [4, 5, 6],          [7, 8, 9],        ]

在将此列表插入数据库之前,我想在新列的每一行中添加一个具有相同值的“列”,例如:

nlist = [            [a, 1, 2, 3],             [a, 4, 5, 6],             [a, 7, 8, 9],           ]

例如,当原始的嵌套列表可能有数百行时,什么是最好的方法?

答案1

小编典典

为什么不更改原始列表(如果您要这样做):

for row in nlist:    row.insert(0, a)

python – 将嵌套列表值附加到新列表中

python – 将嵌套列表值附加到新列表中

我有一个程序,它有一个我希望访问的嵌套列表,然后根据条件附加到新列表.每个列表中有三列,我希望知道如何单独访问它们.这是它当前的样子[[‘A’,’B’,’C’],[‘D’,’E’,’F’],[‘G’,’H’,’I’]].一个更好地解释这个问题的例子是,如果我想要第二列中的数据,那么我的新列表将看起来像[‘B’,’H’].

这是我到目前为止,但我现在相当困难..

n = 0
old_list = [['A','B','C'],['D','E','F'],['G','H','I']]
new_list = []

for a,sublist in enumerate(old_list):
       for b,column in enumerate(sublist):
              print (a,b,old_list[a][b])
              if n == 0:
                     new_list.append(column[0])
              if n == 1:
                     new_list.append(column[1])
              if n == 2:
                     new_list.append(column[2])

print(new_list)

我目前的输出..

0 0 A
0 1 B
0 2 C
1 0 D
1 1 E
1 2 F
2 0 G
2 1 H
2 2 I
['A','C','D','F','G','I']

我想要的输出..

n = 0
new_list = ['A','G']

n = 1
new_list = ['B','H']

n = 2
new_list = ['C','I']

谢谢你的帮助!

解决方法

>>> L = [['A','I']]
>>> columns = list(zip(*L))
>>> columns
[('A','G'),('B','H'),('C','I')]
>>> columns[1] # 2nd column
('B','H')

或者,如果您希望每列都作为列表进行修改(因为zip返回不可变元组),那么使用:

columns = [list(col) for col in zip(*L)]

Python中关于列表嵌套列表的处理

Python中关于列表嵌套列表的处理

在处理列表的时候我们经常会遇到列表中嵌套列表的结构,如果我们要把所有元素放入一个新列表,或者要计算所有元素的个数的话应该怎么做呢?

第一个例子

IMDB-Movie-Data

对于上图中的这样一组数据,如果我们要知道这个CSV文件中所有演员的数量(同一个人只能出现一次)应该怎么做呢?

在pandas中我们可以先取Actors这一列,但是取出来之后我们会发现这是一个列表中嵌套列表的结构,要想将所有元素提取出来我们可以使用两个for循环来解决这一问题。代码如下:

# encoding = utf-8

import pandas as pd

file_path = "d:/learning/pandas/IMDB-Movie-Data.csv"

df = pd.read_csv(file_path)

print(df.head(1))

# 读平均评分
print(df["Rating"].mean())

# 导演的人数(下面两个操作达到的效果是一样的)
print(len(set(df["Director"].tolist())))
print(len(df["Director"].unique()))

# 获取演员的人数
temp_list = df["Actors"].str.split(", ").tolist()

# 将列表套列表转为单列表
actors_list = [i for j in temp_list for i in j]

# set函数是对列表作集合操作,可以去重
print(len(set(actors_list)))

第二个例子

我们再来看第二组例子,还是上图中的数据,如果我们想要统计各个分类的电影的数量,应该怎么做呢?核心思想是:

  1. 先处理列表嵌套列表,将所有的分类统计出来;
  2. 建立一个值全为0的数组,这个数组的行数等于电影数,列数等于分类数;
  3. 在这个数组的列方向上进行求和,得出结果。
# coding=utf-8

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt

file_path = "~/桌面/IMDB-Movie-Data.csv"
df = pd.read_csv(file_path)

# 新建临时列表,将数组中分类列读取
temp_list =  df["Genre"].str.split(",").tolist()
# 处理列表嵌套列表的结构,去除重复元素
Genre_list = set([i for j in temp_list for i in j])

# 新建一个统计数组,即上文所说的第二步
a = pd.DataFrame(np.zeros((df.shape[0], len(Genre_list))), columns=Genre_list, dtype=int)

# 赋值,将上述列表中对应的位置的值变为1
for i in range(len(temp_list)):
    a.loc[i, temp_list[i]] = 1

# 求和,统计每个分类的电影的数量
sum = a.sum(axis=0)
sum = sum.sort_values(ascending=False)

# 绘制条形统计图
_x = sum.index
_y = sum.values

plt.figure(figsize=(20, 8), dpi=80)
plt.yticks(range(max(sum.values)+50)[::50])

plt.bar(_x, _y)
plt.show()

结果如图:

电影分类情况统计图

这里有一个重要的问题,如果原始数据的行数特别多,再采用for循环进行行遍历就会耗费特别长的时间

解决办法见这里的第三个例子。

动态地将存储在php中的数据添加到嵌套的json中

动态地将存储在php中的数据添加到嵌套的json中

我正在尝试动态地在json中为jQuery甘特图生成数据.我知道 PHP,但我完全使用 JavaScript.我已经阅读了十几个关于如何动态地向json添加数据的解决方案,并尝试了几十种组合而没有任何东西.这是json格式:

var data = [{
    name: "Sprint 0",desc: "Analysis",values: [{
        from: "/Date(1320192000000)/",to: "/Date(1322401600000)/",label: "Requirement Gathering",customClass: "ganttRed"
        }]
    },{
    name: " ",desc: "scoping",values: [{
        from: "/Date(1322611200000)/",to: "/Date(1323302400000)/",label: "scoping",<!-- Somoe more data-->

      }];

现在我有PHP db结果中的所有数据.在这里:

$rows=$db->fetchAllRows($result);
$rowsNum=count($rows);

这就是我想要创建json的方式:

var data='';
<?PHP foreach ($rows as $row){ ?>
data['name']="<?PHP echo $row['name'];?>";
data['desc']="<?PHP echo $row['desc'];?>";
data['values'] = {"from" : "/Date(<?PHP echo $row['from'];?>)/","to" : "/Date(<?PHP echo $row['to'];?>)/","label" : "<?PHP echo $row['label'];?>","customClass" : "ganttOrange"};
}

但是这不起作用.我试过没有循环并用纯文本替换PHP变量只是为了检查,但它也没有用.显示没有添加项目的图表.如果我通过将新项目添加到值列表来添加新项目,则它可以正常工作.因此,甘特本身或路径没有问题.基于以上所有,我假设问题是向json添加普通数据.有人可以帮我解决一下吗?

解决方法

首先,您要将属性添加到字符串而不是构建对象.如果你真的想这样做:

var data = [],row;
 <?PHP foreach ($rows as $row) : ?>
     row = {};
     row.name ="<?PHP echo $row['name'];?>";
     row.desc ="<?PHP echo $row['desc'];?>";
     row.values = {"from" : "/Date(<?PHP echo $row['from'];?>)/","customClass" : "ganttOrange"};
     data.push(row);
 <?PHP endforeach; ?>

无论如何它是不安全的(结果是正常的JS代码,不是正确的JSON对象 – 但是当你将它分配给变量时,我认为它不必是严格的JSON格式)

更好的方法是在PHP中构建数据结构并使用json_encode函数为JavaScript生成JSON数据:

<?PHP
 $data = array();
 foreach ($rows as $row) {
      $data[] = array(
          'name'   => $row['name'],'desc'   => $row['desc'],'values' => array(array(
              'from'        => '/Date('.$row['from'].'>)/','to'          => '/Date('.$row['to'].')/','label'       => $row['label'],'customClass' => 'ganttOrange',))
      );
 }
 ?>
 var data = <?PHP echo json_encode($data); ?>;

在Python中复制嵌套列表

在Python中复制嵌套列表

如何解决在Python中复制嵌套列表?

对于不管尺寸多少都可以工作的更通用的解决方案,请使用copy.deepcopy()

import copy
b = copy.deepcopy(a)

解决方法

我想复制一个2D列表,以便如果我修改一个列表,则不修改另一个列表。

对于一维列表,我只是这样做:

a = [1,2]
b = a[:]

现在,如果我修改了b,a就不会修改。

但这不适用于二维列表:

a = [[1,2],[3,4]]
b = a[:]

如果我修改了b,a也会被修改。

我该如何解决?

今天关于在Python中将数据添加到嵌套列表在python中将数据添加到嵌套列表的方法的分享就到这里,希望大家有所收获,若想了解更多关于python – 将嵌套列表值附加到新列表中、Python中关于列表嵌套列表的处理、动态地将存储在php中的数据添加到嵌套的json中、在Python中复制嵌套列表等相关知识,可以在本站进行查询。

本文标签: