2016-04-07 8 views
0

順序付き辞書のリスト内の最後のキーと値のペア(各辞書内の)の最大長を見つけようとしています。Pythonで辞書のリストのキーまたは値の最大長を取得する方法

例:

# below is the list of ordered dict 
my_list = [{'Table': 'Config', 'Column': 'config_id', 'DataType': 'int'}, 
     {'Table': 'Config', 'Column': 'config_name', 'DataType': 'varchar'}, 
     {'Table': 'Config', 'Column': 'config_value', 'DataType': 'numeric'}] 
# Expected out put 
Out put: 8 # as the key (in this case "DataType") has max chars and if any value for the same key has max char then it will return that value. 

任意の提案!

+0

よろしいですか? 'max([my_listのdのd.keys()のkのlen(k)])' – jDo

+0

これは、dictのすべてのキーの最大長を与えません。 @jDo – Pradeep

+0

この場合、あなたはこのペアにのみ興味があります: '' DataType ':'数値 'は最後のものですか? –

答えて

0

my_list :: [collections.OrderedDict]とすると、次のようになります。

kvs = (list(d.items())[-1] for d in my_list) # [(last_key1, last_val1),..] 
words = [max(k,v,key=len) for k,v in kvs] # [max_key1_val1, max_key2_val2,..] 
chars = [len(word) for word in words]  # [len(max_key1_val1),...] 
ans = max(chars)        # max() of all 

これがあなたの望むものでない場合は、以下のようにコメントしてください。私は答えを改善します。

+0

正確ではありません!これは、リストに最後に挿入されたdictを与えます。しかし、私はそれぞれの辞書に最後のキーと値のペアが必要です。私は最大の長さを見つけることができるように。 @C Panda – Pradeep

+0

@Pradeep私はコードを編集しました。チェック。 –

+0

*各dictで最後のキーと値のペアが必要です*これはあなたの質問に全く言及していない新しいものです。それに応じてあなたの質問を編集してください。 @Pradeep –

関連する問題