python中的有序字典输出

时间:2014-05-14 16:15:09

标签: python dictionary output

我有以下字典:

{'key1': 'list1', 'key2': 'list2', and so on}

我想打印它,并按以下顺序将其输出到csv文件中:

key1 list1_element_1
key1 list1_element_2
key1 list1_element_n
key2 list2_element_1
key2 list2_element_n

我该怎么做?这可能(很可能)是一个基本问题,但我找不到答案。感谢。

3 个答案:

答案 0 :(得分:3)

假设您的值是列表/元组,您可以执行以下操作并使用OrderedDict

dictionary = {'key1': ['value1', 'value2', 'value3'], 'key2': ['value1', 'value2']}

for key, values in dictionary.items():
   for value in values:
       print '{} {}'.format(key, value)

如果您使用普通字典(即不是OrderedDict),则需要先排序:

dictionary = {'key1': ['value1', 'value2', 'value3'], 'key2': ['value1', 'value2']}

for key, values in sorted(dictionary.items()):
   for value in values:
       print '{} {}'.format(key, value)

上面的代码只打印您在示例输出中的值。您可以将它们写入csv文件或做任何您想做的事情。

第二个例子的输出是:

key1 value1
key1 value2
key1 value3
key2 value1
key2 value2

答案 1 :(得分:1)

这里有两个与您的问题相关的概念。

  1. 如何存储多元素
  2. 如何存储有序词典
  3. 对于第一个问题,您只需存储每个键的值列表,而不是一个值 对于第二个问题,您可以使用OrderedDict库中的collections

    import collections
    
    def add_value(d, key, value):
        # get a list of values by key or set a default empty list
        lst = d.setdefault(key, list())
        lst.append(value)
    
    def print_dict(d):
        for key, values in d.items():
            for single in values:
                print "{} {}".format(key, single)
    
    
    d = collections.OrderedDict()
    add_value(d, "key1", "value1")
    add_value(d, "key1", "value2")
    add_value(d, "key1", "valueN")
    add_value(d, "key2", "value1")
    add_value(d, "key2", "value2")
    print_dict(d)
    

答案 2 :(得分:0)

首先,一个键不能有多个与之关联的值。

假设一个键/值对,示例代码将是

info = {
"key1":"xyz",
"key4":"anotherrandom",
"key2":"abaadfas",
"key3":"random"
      }
for key in sorted(info):
        print "key: {} and value: {}".format(key,info[key])

如果要将多个值与一个键相关联,可以使用一个列表。

info = {
"key1": [1,2,3],
"key4": [1],
"key2": [5,7,8],
"key3": [0,11,7,8]

}
for key in sorted(info):
    print "key: {} and value: {}".format(key,info[key])