rodtang
@rodtang (* ロッタン)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Python 複数の値を持つ連想配列でn番目の値を取り出したい。

Q&A

Closed

解決したいこと

Pythonで1つのキーに対して複数の値を持つ連想配列を扱っています。

valueにおいてn番目の値を取り出すにはどのような記述をしたらよいでしょうか。

例えば、

list = {
    'fruits':['apple', 'orange', 'grape'],
    'color':['red', 'purple', 'orange'],
}

とあったときに、fruitsからorangeをとりだし、colorからorangeを取り出したいという時にどう記述するか教えていただきたいです。よろしくお願いします。

0

1Answer

どう「取り出す」のかわからなかったので,複数パターン示しておきます.

data = {
    'fruits':['apple', 'orange', 'grape'],
    'color':['red', 'purple', 'orange'],
}

for key, value in data.items():
    print(key, value[value.index('orange')]) # orangeを取り出す謎処理
# fruits orange
# color orange

n = 1
for key, value in data.items():
    print(key, value[n]) # n番目を取り出す
# fruits orange
# color purple

for v in data.values():
    print(v[n])
# orange
# purple

print([v[n] for v in data.values()])
# ['orange', 'purple']

print([data[k][n] for k in data.keys()]) # 冗長.これを書くなら前のやつ書く.質問の文言的にはこっち
# ['orange', 'purple']

print([f"{k}: {v[n]}" for k, v in data.items()])
# ['fruits: orange', 'color: purple']

print(list(zip(*data.values())))
# [('apple', 'red'), ('orange', 'purple'), ('grape', 'orange')]

listはPythonの組み込み関数の1つなので,上書きしないようにすることをお勧めします.上では変数名をdataに置き換えました.そもそも{key: value}形式はlistではなくてdict(dictionary)です.

  • dict.items(): key, value両方取り出し
  • dict.keys(): keyだけ取り出し
  • dict.values(): valueだけ取り出し

あとは好きな感じでいじるだけだと思います.

2Like

Comments

  1. @rodtang

    Questioner

    ご丁寧にありがとうございます!大変参考になりました!
  2. 本質問を「クローズ」にしていただければ終了になります.お疲れ様でした.

Your answer might help someone💌