Python 配列の要素にforでカウントアップしたdict型を入れる

概要


配列の要素にforでカウントアップしたdict型を入れる

問題

最初は下記のソースではカウントアップさせた最後のdict型のみしか出力されなかった。

import json

def lambda_handler(event, context):
    # TODO implement
    array_list = []
    sample_dict = {}
    sample_dict["Name"] = "Yamada"
    sample_dict["Address"] = "Tokyo"
    for nm in [1,2,3,4]:
        sample_dict["No"] = nm
        array_list.append(sample_dict)
    
    return array_list

下記、出力結果。Noの要素がすべて4になってしまってる。

[
  {
    "Name": "Yamada",
    "Address": "Tokyo",
    "No": 4
  },
  {
    "Name": "Yamada",
    "Address": "Tokyo",
    "No": 4
  },
  {
    "Name": "Yamada",
    "Address": "Tokyo",
    "No": 4
  },
  {
    "Name": "Yamada",
    "Address": "Tokyo",
    "No": 4
  }
]

解決策

下記のようにappendで渡すdict型にcopy()を使用すると解決しました。

import json

def lambda_handler(event, context):
    # TODO implement
    array_list = []
    sample_dict = {}
    sample_dict["Name"] = "Yamada"
    sample_dict["Address"] = "Tokyo"
    for nm in [1,2,3,4]:
        sample_dict["No"] = nm
        array_list.append(sample_dict.copy())
    
    return array_list

下記、出力結果

[
  {
    "Name": "Yamada",
    "Address": "Tokyo",
    "No": 1
  },
  {
    "Name": "Yamada",
    "Address": "Tokyo",
    "No": 2
  },
  {
    "Name": "Yamada",
    "Address": "Tokyo",
    "No": 3
  },
  {
    "Name": "Yamada",
    "Address": "Tokyo",
    "No": 4
  }
]

参照


リストのコピーでハマった話

findコマンド

概要


ファイルやディレクトリを検索するコマンド

オプション一覧


オプション 意味
-name ファイル名で検索する
-P シンボリックリンクをたどらない
-L 全てのシンボリックリンクをたどる
-H コマンドラインで指定したシンボリックリンクをたどる

使用例


  • 「aaa.txt」をカレントディレクトリから探す

      find . -name aaa.txt
    
  • ルートディレクトリ下から「profile」という名前のファイルを検索

    • 「2>/dev/null」でエラーメッセージを“捨てる”

      find / -name profile -type f 2>/dev/null
      

参照


【 find 】コマンド(基本編)――ファイルをさまざまな条件で検索する

chownコマンド

概要


指定したファイルやディレクトのユーザやグループの所有者変更を行うコマンド

オプション一覧


オプション 意味
-R ファイルとディレクトリを再帰的に変更
-h シンボリックリンクそれ自身を変更
-v 処理した内容を出力
-c 変更が行われた場合のみ処理内容を出力
-f ほとんどのエラーメッセージを出力しない

使用例


  • 「aaa.txt」をuser1というユーザに変更(グループの変更なし)

      chown user1 aaa.txt
    
  • 「ccc.txt」をuser1 のユーザ、group1 のグループに変更

      chown user1:group1 ccc.txt
    
  • 「eee」ディレクトリ内を再帰的にuser1 のユーザ、group1 のグループに変更

      chown -R user1:group1 eee
    

参照


【 chown 】コマンド/【 chgrp 】コマンド――ファイルの所有者と所有グループを変更する

cdコマンド

概要


ディレクトリ移動に使用されるコマンド

オプション一覧


使用例


備忘録のリスト

本ブログは、エンジニアで備忘録として使用するために開設いたしました。

内容は下記の5点です。記載内容が増えたら、追記していきます。

本ページは記載内容のリンクページといたします。

ページが増えましたら、追記・編集いたします。

リンク一覧

  • ネットワーク・サーバ
  • クラウド(AWS,Azure)
  • ツール
  • 運用
  • プログラミング