質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

799閲覧

python 3.X dict 逆引きで一つのvalueから複数のkeyを抽出する

6Hawaiian

総合スコア7

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

1グッド

0クリップ

投稿2020/06/13 03:54

編集2020/06/13 03:54

#やりたいこと
以下の要素群からそれぞれの要素が何回登場するかを計上した後{名前:回数}とし、valueの値をinput関数によって入力させその対応した名前を列挙するプログラムの作成。

python

1R1 = ("Foorin", "aiko", "Hinatazaka46", "Shimazu Aya", "Tendo Yoshimi", 2 "AKB48", "LiSA", "Sakamoto Fuyumi", "Oka Midori", "TWICE", 3 "Little Glee Monster", "Keyakizaka46", "Mizumori Kaori", "Shina Ringo", "Nogizaka46", 4 "Perfume", "Ishikawa Sayuri", "Superfly", "Ikimonogakari", "Matsuda Seiko", "MISIA", 5 "Go Hiromi", "GENERATIONS", "Junretsu", "Hey!Say!JUMP", "Kis-My-Ft2" 6 "Yamauchi Keisuke", "Miura Daichi", "King Gnu", "Fukuyama Masaharu", "Itsuki Hiroshi", 7 "DA PUMP", "Official Hige Dandism", "King&Prince", "Miyama Hiroshi", "Kanjani8", 8 "Hoshino Gen", "RADWIMPS", "Suda Masaki", "Yuzu", "Hikawa Kiyoshi", "Arashi") 9 10H30 = ("Sakamoto Fuyumi", "Little Glee Monster", "DAOKO", "Oka Midori", "Tendo Yoshimi", 11 "Aimyon", "Mizumori Kaori", "Shimazu Aya", "Ikimonogakari" 12 "AKB48", "Perfume", "Keyakizaka46", "Nishino Kana", "TWICE", 13 "Superfly", "aiko", "Matsuda Seiko", "Matsutoya Yumi", "MISIA", "Ishikawa Sayuri", 14 "Sandaime J Soul Brothers", "Go Hiromi", "Yamauchi Keisuke", "Hey!Say!JUMP", "Suchmos", 15 "Junretsu", "Sexy Zone", "YOSHIKI", "Itsuki Hiroshi", "DA PUMP", 16 "Fukuyama Masaharu", "King&Prince", "Kanjani8", "Miyama Hiroshi", "SEKAI NO OWARI", 17 "EXILE", "Miura Daichi", "Hikawa Kiyoshi", "Hoshino Gen", "Yonezu Kenshi", 18 "Yuzu", "Arashi") 19 20H29 = ("Little Glee Monster", "E-girls", "SHISHAMO", "AI", "Oka Midori", 21 "Ichikawa Yukino", "Tendo Yoshimi", "Kuraki Mai", "TWICE", "Mizumori Kaori", 22 "Shimazu Aya", "Keyakizaka46", "Sakamoto Fuyumi", "Nishino Kana", "Nogizaka46", 23 "Matsuda Seiko", "Shina Ringo", "Perfume", "AKB48", "Matsu Takako", 24 "Superfly", "Takahashi Mariko", "Ishikawa Sayuri", 25 "Hey!Say!JUMP", "Yamauchi Keisuke", "Miyama Hiroshi", "Takehara Pistol", "Sexy Zone", 26 "Fukuda Kouhei", "Sandaime J Soul Brothers", "SEKAI NO OWARI", "Miura Daichi", "WANIMA", 27 "Go Hiromi", "Kanjani8", "Fukuyama Masaharu", "TOKIO", "Itsuki Hiroshi", 28 "Hirai Ken", "Totasu Matsumoto", "X JAPAN", "Elephant kashimashi", "Hoshino Gen", 29 "Arashi", "Hikawa Kiyoshi", "Yuzu") 30 31H28 = ("PUFFY", "E-girls", "Keyakizaka46", "miwa", "Tendo Yoshimi", 32 "Ichikawa Yukino", "Kouzai Kaori", "Shina Ringo", "Ayaka", "Mizumori Kaori", 33 "Ikimonogakari", "Nogizaka46", "Shimazu Aya", "Nishino Kana", "AI", 34 "AKB48", "Perfume", "Otake Shinobu", "Sakamoto Fuyumi", "Matsuda Seiko", 35 "Takahashi Mariko", "Utada Hikaru", "Ishikawa Sayuri", 36 "Kanjani8", "AAA", "Miyama Hiroshi", "Yamauchi Keisuke", "Sexy Zone", 37 "SEKAI NO OWARI", "Sandaime J Soul Brothers", "Fukuda Kouhei", "Go Hiromi", "V6", 38 "Yuzu", "RADWIMPS", "Fukuyama Masaharu", "RADIO FISH", "Kiritani Kenta", 39 "Itsuki Hiroshi", "KinKi Kids", "Hoshino Gen", "TOKIO", "X JAPAN", 40 "THE YELLOW MONKEY", "Hikawa Kiyoshi", "Arashi") 41 42H27 = ("Ohara Sakurako", "Godai Natsuko", "Nogizaka46", "E-girls", "Sakamoto Fuyumi", 43 "Myuzu", "AAA", "Shimazu Aya", "Fuji Ayako", "miwa", 44 "Wada Akiko", "Tendo Yoshimi", "NMB48", "Mizumori Kaori", "Ikimonogakari", 45 "Shina Ringo", "AKB48", "Superfly", "Nishino Kana", "Ishikawa Sayuri", 46 "Perfume", "MISIA", "Rebecca", "Imai Miki", "Takahashi Mariko", "Matsuda Seiko", 47 "Go Hiromi", "Sexy Zone", "Miyama Hiroshi", "SEKAI NO OWARI", "Tokunaga Hideaki", 48 "Yamauchi Keisuke", "Hoshino Gen", "Gesunokiwamiotome", "Yuzu", "Hikawa Kiyoshi", 49 "Hosono Takashi", "Kanjani8", "Sandaime J Soul Brothers", "Fukuyama Masaharu", "TOKIO", 50 "Arashi", "EXILE", "Golden Bomber", "BUMP OF CHICKEN", "Itsuki Hiroshi", "V6", "X JAPAN", 51 "Miwa Akihiro", "SMAP", "Mori Shinichi", "Kondo Masahiko")

##{名前:回数}の作成

python

1 2 3new_list = [] 4all_singer = list(H27) + list(H28) + list(H29) + list(H30) + list(R1) 5new_list.append(all_singer) 6 7counter = {} 8for i in all_singer: 9 if i in counter: 10 counter[i] += 1 11 else: 12 counter[i] = 1 13 14for s,v in sorted(counter.items()): 15 print(s,v)

上のプログラム利用して上記の{名前:回数}のdictを作成したのですがここから同一の回数を持つ名前を列挙する点で苦戦しています。
while True を利用し以下のように途中まで作成してみましたが上手に動かず八方塞がりとなってしまいました。
有識者の皆様よろしければご教授いただけると幸いです。

kabayan55👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

keys = [k for k, v in counter.items() if v == 3] print(keys)

のようにできます。このコードでは、回数が3の時の名前のリスト keys を作成して、それをprintしています。

参考URL: Pythonで辞書の値からキーを抽出

投稿2020/06/13 04:15

kabayan55

総合スコア389

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

6Hawaiian

2020/06/13 05:26

回答ありがとうございます。 解答を参考に key1 = [k for k, v in counter.items() if v == 1] key2 = [k for k, v in counter.items() if v == 2] key3 = [k for k, v in counter.items() if v == 3] key4 = [k for k, v in counter.items() if v == 4] key5 = [k for k, v in counter.items() if v == 5] while True: number1_5 = input("出場回数を指定してください > ") if number1_5 == 1: print(key1) elif number1_5 == 2: print(key2) elif number == 3: print(key3) elif number ==4: print(key4) elif number == 5: print(key5) というプログラムを作成したのですが、うまく動かず悩んでいます よろしければ改善点をご指導ください。
kabayan55

2020/06/13 05:39

手元で動かしてみましたが、 NameError: name 'number' is not defined と出ますね! elifの3〜5の箇所が number になっていますが、number1_5 にすれば良さそうです。 また、print(type(number1_5)) のように型を見ていただけるとわかると思うのですが、number1_5はstr型になっていたので、int型にする必要がありそうです。 同じことをするコードを以下のように簡潔に書くこともできます。 while True: number1_5 = input("出場回数を指定してください > ") key = [k for k, v in counter.items() if v == int(number1_5)] print(key)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問