【问题标题】:Python Form a List based from the values in dictionaryPython 根据字典中的值形成一个列表
【发布时间】:2016-07-15 11:15:04
【问题描述】:

我是 python 新手 我已经订购了字典

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

如何形成一个列表,该列表应该只包含字典 dictA 中存在的值的第一个元素 然后是第二个元素......依此类推,直到到达list_size_limit = 5

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

如果list_size_limit = 3

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

我如何形成一个列表,其中字典的所有值的第一个元素出现在第一个列表中,然后是第二个元素......第三个元素

【问题讨论】:

  • 你尝试过什么,它到底有什么问题?请注意,您不能保证字典中值的输出顺序,不清楚是否需要。
  • 这个问题有一个固有的问题。字典的键是无序的,所以listlist_size_limit == 3 可以是{"s", "p", "w"} 的任何排列。 OrderedDict 至少可以提供帮助。
  • 我有 Orderdict() dictA 是有序的
  • 我需要字典所有值的所有第一个元素出现在第一个列表中,然后是第二个元素...第三个元素
  • “我有 Orderdict() dictA 已订购”请将此添加到问题中。

标签: python list sorting dictionary


【解决方案1】:

老实说,不知道该调用什么函数。给事物命名很难。

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

【讨论】:

  • 还有其他解决方法吗?无需创建 iter 对象
【解决方案2】:
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]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-29
    • 2017-11-06
    • 2018-04-30
    • 1970-01-01
    • 2015-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多