キーごとに複数の一意の値を持つ文字列のリストから3レベルの辞書を作成します

少しずつ

ツリーを構築するために必要なテキスト文字列のリストがあります。これを実現するための適切なデータ構造を理解しているので、辞書です。各文字列のサイズは固定されており、すべての要素の形式は同じであるため、追加のチェックは必要ありません。リストの各レコードはDD / MM / YYYYの形式の日付であり、年/年はツリーのルートにある必要があります(キー、ここでは重複はありません)。各年は複数の月である可能性があります(内に重複する月はありません)同じ年)値として、毎月複数日(同じ月内に重複する日はありません)。

文字列のリストの例:

データ= ['04 / 02/2018'、 '05/02/2018'、 '06/02/2018'、 '01/03/2018'、 '10/03/2018'、 '08/09/2017' 、'09 / 09/2017 '、' 11/10/2017 '、' 11/12/2017 '、' 14/06/2018 '、' 15/06/2018 '、' 24/07/2018 '、' 26/07/2018 '、' 30/08/2018 '、' 31/08/2018 '、' 01/09/2018 ']

解決策のほかに、何か提供できるものがあれば、理解するために説明もお願いします。

これは私がこれまでに書いたものですが、結果は最後の2項目しかない辞書であるため、明らかに間違っています。

d = {}
for item in data:
    rec = item.split('/')
    d.update({rec[2]:{rec[1]:(rec[0])}})

そのデータに必要な出力は次のようになります。

{'2017': {'09': ['08', '09'], '10': ['11'], '12': ['11']},
 '2018': {'02': ['04', '05', '06'],
          '03': ['01', '10'],
          '06': ['14', '15'],
          '07': ['24', '26'],
          '08': ['30', '31'],
          '09': ['01']}}
PM2リング

これを実現するにはさまざまな方法があります。あなたは可能性が使用defaultdictからcollectionsモジュール。ただし、プレーンなdict.setdefault方法を使用して実行することもできます。

setdefault(key[, default])

キーが辞書にある場合は、その値を返します。そうでない場合は、defaultの値でキー挿入し、defaultを返しますデフォルトのデフォルトはNoneです。

データをループして、日、月、年の文字列に分割します。次に、ベースツリーで年キーを探し、それが存在しない場合は、新しい空のdictを作成します。次に、その年のdictで月のキーを調べ、存在しない場合はそのリストの新しいリストを作成します。最後に、日文字列を月リストに追加します。

from pprint import pprint

data = [
    '04/02/2018', '05/02/2018', '06/02/2018', '01/03/2018', '10/03/2018', '08/09/2017', '09/09/2017',
    '11/10/2017', '11/12/2017', '14/06/2018', '15/06/2018', '24/07/2018', '26/07/2018', '30/08/2018',
    '31/08/2018', '01/09/2018'
]

tree = {}

for s in data:
    day, mon, year = s.split('/')
    ydict = tree.setdefault(year, {})
    mlist = ydict.setdefault(mon, [])
    mlist.append(day)

pprint(tree)

出力

{'2017': {'09': ['08', '09'], '10': ['11'], '12': ['11']},
 '2018': {'02': ['04', '05', '06'],
          '03': ['01', '10'],
          '06': ['14', '15'],
          '07': ['24', '26'],
          '08': ['30', '31'],
          '09': ['01']}}

メインループの3つのステップを1行にまとめることはできますが、読むのは少し難しいです。

for s in data:
    day, mon, year = s.split('/')
    tree.setdefault(year, {}).setdefault(mon, []).append(day)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

辞書のリストからキーごとに複数の値を持つ辞書を作成する

分類Dev

一意のキーと値のリストを使用して、2つの列から辞書を作成します

分類Dev

(一意の値を持つ)辞書のリストから重複を削除します

分類Dev

Excelデータからキーごとに複数の値を持つ辞書にループします

分類Dev

重複する値を持つ複数の列から一意の値のベクトルを作成します

分類Dev

キーごとに複数の値を持つリストから辞書への変換?

分類Dev

リストのPython辞書-一意の値を持つキーを返す

分類Dev

辞書のリストから特定の値を持つリストを作成する(文字列としてのキーと値は整数のリストです)

分類Dev

一意のキーと値をリストとして持つ辞書からデータフレームを作成するにはどうすればよいですか?

分類Dev

Pythonで一意のキーと複数の値を持つ辞書として出力を返す方法は?

分類Dev

キーのリストと複数の値のリストから辞書のリストを作成します

分類Dev

複数のキーと値を持つ辞書からデータフレームを作成します

分類Dev

タプルのリストを、キーの複数のdict値を持つ辞書に変換します

分類Dev

Python: 複数の値を持つキーを持つ辞書。値のリストを区切る一連の辞書として辞書を印刷する方法

分類Dev

1つの列の一意の文字列をループし、一意の文字列に関連付けられた他の2つの列から辞書またはデータの配列を作成します

分類Dev

Pandasシリーズから、一意の要素をキーとして、それらのインデックスを値として持つ辞書を作成します

分類Dev

Rの複数のデータフレームの列から一意の値のリストを作成します

分類Dev

php / mysqlは、複数の同一フィールドを持つ1つのテーブルをクエリし、2番目のテーブルのフィールドごとに1つの一意のエントリを作成します

分類Dev

特定のキーの値の一意性に基づいて、辞書のリストから重複する辞書を削除する

分類Dev

消費ごとに一意の値を持つストリームを消費します

分類Dev

キーに対応する複数の一意の値を持つPython辞書

分類Dev

キーごとに複数の値を持つ辞書からcsvファイルを作成するにはどうすればよいですか?

分類Dev

Rの一意のIDごとに複数の値を持つ列に基づいてフラグを作成します

分類Dev

セルごとに複数の文字列の列を一意の単一セル文字列に分割します

分類Dev

複数の値を持つフィルター処理された列からの一意の値を配列に入力します

分類Dev

キー:column_nameと値:データフレームからPythonの列に一意の値の辞書を作成する方法

分類Dev

キーごとに複数の値を持つ2つの辞書を比較し、共通の値を取得するPython

分類Dev

Excel:テーブルから一意の値のリストを取得し、数式を使用して値を1つの列に配置します

分類Dev

各キーに一意の可能な値を持つ辞書?

Related 関連記事

  1. 1

    辞書のリストからキーごとに複数の値を持つ辞書を作成する

  2. 2

    一意のキーと値のリストを使用して、2つの列から辞書を作成します

  3. 3

    (一意の値を持つ)辞書のリストから重複を削除します

  4. 4

    Excelデータからキーごとに複数の値を持つ辞書にループします

  5. 5

    重複する値を持つ複数の列から一意の値のベクトルを作成します

  6. 6

    キーごとに複数の値を持つリストから辞書への変換?

  7. 7

    リストのPython辞書-一意の値を持つキーを返す

  8. 8

    辞書のリストから特定の値を持つリストを作成する(文字列としてのキーと値は整数のリストです)

  9. 9

    一意のキーと値をリストとして持つ辞書からデータフレームを作成するにはどうすればよいですか?

  10. 10

    Pythonで一意のキーと複数の値を持つ辞書として出力を返す方法は?

  11. 11

    キーのリストと複数の値のリストから辞書のリストを作成します

  12. 12

    複数のキーと値を持つ辞書からデータフレームを作成します

  13. 13

    タプルのリストを、キーの複数のdict値を持つ辞書に変換します

  14. 14

    Python: 複数の値を持つキーを持つ辞書。値のリストを区切る一連の辞書として辞書を印刷する方法

  15. 15

    1つの列の一意の文字列をループし、一意の文字列に関連付けられた他の2つの列から辞書またはデータの配列を作成します

  16. 16

    Pandasシリーズから、一意の要素をキーとして、それらのインデックスを値として持つ辞書を作成します

  17. 17

    Rの複数のデータフレームの列から一意の値のリストを作成します

  18. 18

    php / mysqlは、複数の同一フィールドを持つ1つのテーブルをクエリし、2番目のテーブルのフィールドごとに1つの一意のエントリを作成します

  19. 19

    特定のキーの値の一意性に基づいて、辞書のリストから重複する辞書を削除する

  20. 20

    消費ごとに一意の値を持つストリームを消費します

  21. 21

    キーに対応する複数の一意の値を持つPython辞書

  22. 22

    キーごとに複数の値を持つ辞書からcsvファイルを作成するにはどうすればよいですか?

  23. 23

    Rの一意のIDごとに複数の値を持つ列に基づいてフラグを作成します

  24. 24

    セルごとに複数の文字列の列を一意の単一セル文字列に分割します

  25. 25

    複数の値を持つフィルター処理された列からの一意の値を配列に入力します

  26. 26

    キー:column_nameと値:データフレームからPythonの列に一意の値の辞書を作成する方法

  27. 27

    キーごとに複数の値を持つ2つの辞書を比較し、共通の値を取得するPython

  28. 28

    Excel:テーブルから一意の値のリストを取得し、数式を使用して値を1つの列に配置します

  29. 29

    各キーに一意の可能な値を持つ辞書?

ホットタグ

アーカイブ