我有一个字典,如下所示。我希望将输出定向到文件“ insert.sql”。我正在尝试在此处打印结果集。我需要帮助将此输出发送到文件。到目前为止,这是我编写的代码。我在这里想念什么。
预期输出:
insert into abc values (
'india',
'china'
);
观察到的输出:
insert into abc values (
'china'
);
代码:
newdict = {'asia': 'india',
'asia': 'china'}
print("insert into abc values (")
for i, (k, v) in enumerate(newdict.items()):
if i:
print(",")
print("'" + v + "'", end="")
print("\n);")
答案 0 :(得分:1)
尝试:
with open('insert.sql', 'w') as output:
print("insert into abc values (", file=output)
for i, (k, v) in enumerate(newdict.items()):
if i:
print(", ", file=output)
print("'" + v + "'", end="", file=output)
print("\n);", file=output)
print
的{{1}}参数允许您传递文件,将打印输出而不是默认标准输出写入文件。
编辑:由于仅使用值,因此可以使用较短的版本:
file
答案 1 :(得分:1)
您的问题是您正在创建字典并在其中复制密钥,从而有效地创建了一个以最后一个值作为密钥值的字典,
>>> {'a': 10, 'a': 20}
{'a': 20}
(就像这样做:
>>> data = {'a': 10}
>>> data['a'] = 20
>>> data
{'a': 20}
就您而言,我认为您需要为每个键使用一个值列表,即
>>> data = {'asia': ['india', 'china']}
>>> for continent, countries in data.items():
... for country in countries:
... print(continent, country)
...
asia india
asia china
顺便说一句,不需要使用enumerate
并检查ther是否是索引,因为如果没有元素,for
循环将终止
答案 2 :(得分:1)
您在字典中使用的是相同的键,因此“印度”被“中国”代替。尝试将其放入列表中。
newdict = {'asia': ['india', 'china']}
print("insert into abc values (")
for i, (k, v) in enumerate(newdict.items()):
for j, country in enumerate(v):
print("'" + country + "'", end="")
if j!=(len(v)-1):
print(",")
print("\n);")