2016-03-28 57 views
-6

從值基於列表我是新來的蟒蛇 我已下令字典Python的形式在字典

dictA = {f1 : ["s","r"], 
     f2 : ["p"], 
     f3 : ["w","t"]} 

如何形成應該從當前值在字典格言 只有1個元素的列表而隨後第二元素......等等,直到它達到list_size_limit = 5

Final list ["s","p","w","r","t"] 

如果list_size_limit = 3

Final list = ["s","p","w"] 

我如何形成具有字典的所有值的1元素存在於表1日,其次是第二個元素...第三名元素

+3

你嘗試過什麼,什麼是恰恰與它的問題呢?請注意,您無法保證字典中值的輸出順序,因此您是否需要這些值尚不清楚。 – jonrsharpe

+0

這個問題存在固有的問題。字典在它們的鍵上是無序的,所以'list'和'list_size_limit == 3'可以是'{「s」,「p」,「w」}'的任意排列。 ['OrderedDict'](https://docs.python.org/3/library/collections.html#collections.OrderedDict)可以幫助至少。 – Kupiakos

+0

我已Orderdict()dictA被訂購 – FryMan

回答

0
dictA = {"f1" : ["m"], 
     "f2" : ["p","y","o","a","s","d","f","g"], 
     "f3" : ["w","t"], 
     "f5" : ["z","x"], 
     "f6" : ["c","v"]} 

result = [] 
limit_size = 3 
values_list = [] 
for values in dictA.itervalues(): 
    values_list.append(len(values)) 

for i in range(0,max(values_list)): 
    keys = list(dictA.keys()) 
    count = 0 
    while count < len(keys): 
     try: 
      result.append(dictA[keys[count]][i]) 
     except IndexError: 
      dictA.pop(keys[count]) 
     count = count + 1 
print "final ",result[0:limit_size] 
2

真的不知道該怎麼調用這個函數。命名事情很難。

def getFirstOfDictList(d, limit=None): 
    if limit is None: 
     limit = float('inf') 
    done = 0 
    iters = [iter(i) for i in d.values()] 
    items = [] 
    while iters: 
     toRemove = [] 
     for iterator in iters: 
      if done >= limit: 
       return items 
      try: 
       items.append(next(iterator)) 
       done += 1 
      except StopIteration: 
       toRemove.append(iterator) 
     for finishedIterator in toRemove: 
      iters.remove(finishedIterator) 
    return items 
+0

任何替代方法來解決?無需創建iter對象 – FryMan