我有以下字典:
{'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
我该怎么做?这可能(很可能)是一个基本问题,但我找不到答案。感谢。
答案 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)
这里有两个与您的问题相关的概念。
对于第一个问题,您只需存储每个键的值列表,而不是一个值 对于第二个问题,您可以使用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])