1

私は辞書を持っています:

d = {'a': ['Thing', 'City', 10], 'b': ['Thing' ,'City', 5]} 

などなどnum = 10

辞書を調べて、 num が辞書のリストにある他の数字と一致するかどうかを確認したいと思います。もしそうなら、数字の前の 2 つの要素を取得し、3 つすべてを返したいと思います。

たとえば、この場合、num = 10andは をa持っているので10、 を返す必要があり['Thing', 'City' 10]ます。

これまでのところ、私はこれを持っています:

for i in d.keys(): # goes through the dictionary
    for item in d[i]:
        if type(item) == int: # if the item is an int
            if num = item:
                 l.append(item)
                 #l.append the items before it

私の質問はこれに要約されると思います:リスト内の特定の要素の前にアイテムを取得するにはどうすればよいですか? この場合、私は 10 を持っていますが、Thing と City も必要です。

ありがとう!

4

4 に答える 4

2

次のようなことを試してください:

for key, item in d.items():
  for idx, subitem in enumerate(item):
    if isinstance(subitem, int) and subitem == num:
      l.extend(subitem[idx-2:idx+1])
于 2012-08-16T20:54:01.307 に答える
2

in物事を単純化するためにキーワードを使用します。

def get_list(num, d):
    for lst in d.values(): 
        if num in lst:
            return(lst) #or do whatever you want with the list

例:

d = {'a': ['Thing', 'City', 10], 'b': ['Thing' ,'City', 5]}
get_list(10, d)
>>>  ['Thing', 'City', 10]
get_list(5,d)
>>>  ['Thing', 'City', 5]
于 2012-08-16T20:55:54.310 に答える
0
result = [v for v in d.itervalues() if v[2] == num]
于 2012-08-16T21:22:30.963 に答える
0

の値の最後の要素を単純dに比較する場合、複数の出現がある可能性があります... (ただし、これは暗黙の型チェックを行いません)...

matching = [k for k,v in d.iteritems() if v[-1] == 10]
for k in matching:
    print k, d[k]
于 2012-08-16T21:15:47.063 に答える