辞書の値を指定したキーのリストを作成する[閉じる] -- python フィールド 関連 問題

Create a list of keys given a value in a dictionary [closed]












1
vote

問題

日本語
閉じた 7年前>

このような辞書を持っています:

<事前> <コード> child_parent={} child_parent[1]=0 child_parent[2]=0 child_parent[3]=2 child_parent[4]=2

与えられた場合0すべてのキーをPythonic?

の値が0のリストにすべてのキーを見つけることができますか?

0の終了結果は[1,2]と2 [3,4]

です。
英語

I have a dictionary that looks like this:

child_parent={} child_parent[1]=0 child_parent[2]=0 child_parent[3]=2 child_parent[4]=2 

If given 0 how can I find all keys into a list where the value is 0 that is pythonic?

end result of 0 is [1,2] and for 2 [3,4]

</div
  

回答リスト

4
 
vote
vote
ベストアンサー
 

DICTの<コード> var foo = function(val) { var base = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', i, j, result = 0; for (i = 0, j = val.length - 1; i < val.length; i += 1, j -= 1) { result += Math.pow(base.length, j) * (base.indexOf(val[i]) + 1); } return result; }; console.log(['A', 'AA', 'AB', 'ZZ'].map(foo)); // [1, 27, 28, 702] 1 :

でリストの理解を使用する <事前> <コード> var foo = function(val) { var base = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', i, j, result = 0; for (i = 0, j = val.length - 1; i < val.length; i += 1, j -= 1) { result += Math.pow(base.length, j) * (base.indexOf(val[i]) + 1); } return result; }; console.log(['A', 'AA', 'AB', 'ZZ'].map(foo)); // [1, 27, 28, 702] 2

<事前> <コード> var foo = function(val) { var base = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', i, j, result = 0; for (i = 0, j = val.length - 1; i < val.length; i += 1, j -= 1) { result += Math.pow(base.length, j) * (base.indexOf(val[i]) + 1); } return result; }; console.log(['A', 'AA', 'AB', 'ZZ'].map(foo)); // [1, 27, 28, 702] 3
 

Use a list comprehension over the dict's items:

[k for k, v in child_parent.items() if v == 0] 

 

>>> [k for k, v in child_parent.items() if v == 0]  [1, 2]  >>> [k for k, v in child_parent.items() if v == 2]  [3, 4] 
</div
 
 
2
 
vote

リスト理解:

<事前> <コード> var foo = function(val) { var base = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', i, j, result = 0; for (i = 0, j = val.length - 1; i < val.length; i += 1, j -= 1) { result += Math.pow(base.length, j) * (base.indexOf(val[i]) + 1); } return result; }; console.log(['A', 'AA', 'AB', 'ZZ'].map(foo)); // [1, 27, 28, 702] 4
 

You could use a list comprehension:

In [62]: [k for k,v in child_parent.iteritems() if v==0] Out[62]: [1, 2] 
</div
 
 
1
 
vote
<事前> <コード> var foo = function(val) { var base = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', i, j, result = 0; for (i = 0, j = val.length - 1; i < val.length; i += 1, j -= 1) { result += Math.pow(base.length, j) * (base.indexOf(val[i]) + 1); } return result; }; console.log(['A', 'AA', 'AB', 'ZZ'].map(foo)); // [1, 27, 28, 702] 5

これは辞書 var foo = function(val) { var base = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', i, j, result = 0; for (i = 0, j = val.length - 1; i < val.length; i += 1, j -= 1) { result += Math.pow(base.length, j) * (base.indexOf(val[i]) + 1); } return result; }; console.log(['A', 'AA', 'AB', 'ZZ'].map(foo)); // [1, 27, 28, 702] 61 の各キーを繰り返し反復し、値 var foo = function(val) { var base = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', i, j, result = 0; for (i = 0, j = val.length - 1; i < val.length; i += 1, j -= 1) { result += Math.pow(base.length, j) * (base.indexOf(val[i]) + 1); } return result; }; console.log(['A', 'AA', 'AB', 'ZZ'].map(foo)); // [1, 27, 28, 702] 7 に対応するすべてのキーからリストを作成します。

 
def find_keys(d, x):   return [key for key in d if d[key] == x] 

This iterates over each key in the dictionary d and creates a list out of all the keys corresponding to value x.

</div
 
 
0
 
vote

これを一度行っている場合は、他の回答でリストの理解方法を使用してください。

この複数回実行している場合は、キーを値に索引付けする新しいDICTを作成します。

<事前> <コード> from collections import dictdefault def valueindex(d): nd = dictdefault(list) for k,v in d.iteritems(): nd[v].append(k) return nd parent_child = valueindex(childparent) assert parent_child[0] == [1,2] assert parent_child[1] == [3,4]
 

If you are only doing this once, use the list comprehension methods in the other answers.

If you are doing this multiple times, create a new dict that indexes keys by values:

from collections import dictdefault  def valueindex(d):     nd = dictdefault(list)     for k,v in d.iteritems():         nd[v].append(k)     return nd  parent_child = valueindex(childparent) assert parent_child[0] == [1,2] assert parent_child[1] == [3,4] 
</div
 
 

関連する質問

49  WindowsでPDFのプレビューJPEGを入手してください。  ( Get a preview jpeg of a pdf on windows ) 
PDFの最初のページのJPEGプレビューを生成する必要があるクロスプラットフォーム(Python)アプリケーションを持っています。 Mac上で産卵しています SIPS 。 Windowsでできることができるようなものはありますか? ...

62  Python CodeBaseのための連続統合システム  ( Continuous integration system for a python codebase ) 
私は python codebaseを使用して趣味プロジェクトで仕事を始めています。 cruisecontrol または teamcity と同様に、テストが失敗したときに責任ある人にNAG電子メールを送信し、送信します。 私はほとんどの vcses でフ...

50  CX_ORACLE:結果セットをどのように繰り返すのですか?  ( Cx oracle how do i iterate over a result set ) 
結果セットを繰り返す方法はいくつかあります。それぞれのトレードオフは何ですか? ...

55  Djangoのクラスビュー  ( Class views in django ) 
Django ビューを表示するために、少しだけを変更したい場合に問題が発生する可能性があります。機能性はい、私は関数内のステートメント内のステートメントの場合は、millionのキーワード引数を持つことができますが、私はオブジェクト指向アプローチを考えてい...

77  PythonのXML処理[閉じた]  ( Xml processing in python ) 
閉鎖。この質問は意見ベースです。現在答えを受け付けていません。 この質問を改善したいですか? ...

39  PythonとMySQL  ( Python and mysql ) 
PostgreSQLを操作するようにPythonを取得することができますが、MySQLで動作することはできません。主な問題は、私がDjangoやPysqlなどのものをインストールする機能を持っていない共有ホスティングアカウントでは、私のコンピュータにインスト...

536  IterTools.Groupby()を使用する方法  ( How do i use itertools groupby ) 
Pythonの itertools.groupby() 機能を実際に使用する方法については、わかりやすい説明を見つけることができませんでした。私がやろうとしていることはこれです: リストを取ります - この場合、objectified lxml 要素の子...

682  既存のオブジェクトインスタンスへのメソッドを追加する  ( Adding a method to an existing object instance ) 
Pythonで既存のオブジェクトにメソッドを追加することが可能であることを読みました。 私はそれがそうするのが常に良いわけではないことを理解しています。しかし、どれほどどんなにこれを行うかもしれませんか? ...

41  Mac上の表示名からフォントへのフルパスを見つけるにはどうすればよいですか。  ( How can i find the full path to a font from its display name on a mac ) 
PhotoshopのJavaScript APIを使用して、特定のPSDのフォントを見つけています。 APIから返されたフォント名を指定して、フォント名がディスク上に対応する実際の物理フォントファイルを見つけたい。 これはOSX上で実行されているPytho...

51  配列内のPythonオブジェクトの属性と一致するように 'in'を使用する  ( Using in to match an attribute of python objects in an array ) 
私は夢見ていたかどうかを覚えていませんが、私は何かを許可されている機能があることを思い出すようです、 <事前> <コード> foo in iter_attr(array of python objects, attribute name) 私はドキュメントを...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有