我是 Python 新手,尝试了所有我能想到的方法,但找不到解决方案。我有一个列表,其中包含一个字典作为其最后一个项目,它具有不同数量的键,看起来像。
l = [('Apple', 1, 2, {'gala': (2, 1.0)}),
('Grape ', 2, 4, {'malbec': (4, 0.25), 'merlot': (4, 0.75)}),
('Pear', 4, 5, {'anjou': (5, 0.2), 'bartlet': (5, 0.4), 'seckel': (5, 0.2)}),
('Berry', 5, 5, {'blueberry': (5, 0.2), 'blackberry': (5, 0.2), 'straw': (5, 0.2)})]
Run Code Online (Sandbox Code Playgroud)
当我尝试从当前列表写入 .csv 文件时,我使用了:
test_file = ()
length = len(l[0])
with open('test1.csv', 'w', encoding = 'utf-8') as test_file:
csv_writer = csv.writer(test_file, delimiter=',')
for y in range(length):
csv_writer.writerow([x[y] for x in l])
Run Code Online (Sandbox Code Playgroud)
它使列表中的最后一个元素,即字典,在输出文件中仅是一个字符串:
Apple 1 2 {'gala': …
Run Code Online (Sandbox Code Playgroud) 我正在使用Python 3.2与Mac OS Maverick,我正在尝试使用以下格式获取.cvs文件:
'Lisa plowed ', '1A', 'field', 'field', 'field', 'field', 'field'
'John greased ', '1A', 'axle', 'wheel', 'wheels', 'wheel', 'engine'
'Tracy freed ', '1A', 'animals', 'fish', 'slaves', 'slaves', 'slaves'
'Paul alleged ', '1A', 'truth', 'crime', 'facts', 'infidelity', 'incident'
Run Code Online (Sandbox Code Playgroud)
进入字典,每行中的第一项是键,行的其余部分是映射到该键的值.我尝试了不同的东西,我得到的最接近的是这段代码,但不幸的是,我还没有:
import csv
data =open('test.csv', encoding = 'utf=8')
reader = csv.reader(data, delimiter=",")
for col in reader:
print(col)
result = {}
for row in reader:
key = row[0]
result[key] = row[1:]
print(result)
Run Code Online (Sandbox Code Playgroud)
我得到的结果只是{},好像字典是空的.我真的很感激任何有关这方面的帮助,无论是提供新的替代方案还是将我推荐给我能找到答案的地方.非常感谢!
我有一本字典,看起来像:
d = {'alleged': ['truths', 'fiels', 'fact', 'infidelity', 'incident'],
'greased': ['axle', 'wheel', 'wheels', 'fields', 'enGine', 'pizza'],
'plowed': ['fields', 'field', 'field', 'incident', '', '']}
Run Code Online (Sandbox Code Playgroud)
我想检查它并用另一个字符串替换一些项目。要查找的字符串和替换它们的字符串也在字典中,其中键是要查找的字符串,值是要替换的字符串:
d_find_and_replace = {'wheels':'wheel', 'Field': 'field', 'animals':'plants'}
Run Code Online (Sandbox Code Playgroud)
我尝试使用如下函数:
def replace_all(dic1, dic2):
for i, j in dic.items():
dic3 = dic1.replace(i, j)
return(dic3)
Run Code Online (Sandbox Code Playgroud)
但它不会工作,因为很明显,它在其中使用了替换内置函数replace
,并且不可能将它用于字典。关于如何做到这一点的任何建议?非常感谢您的帮助。
编辑以纠正拼写错误。
我确信这很愚蠢,但我根本无法绕过它.我有一个像这样的字典,每个键的值不等:
'John greased ': ['axle', 'wheel', 'wheels', 'wheel', 'engine', ''],
'Paul alleged ': ['truth', 'crime', 'facts', 'infidelity', 'incident', ''],
'Tracy freed ': ['animals', 'fish', 'slaves', 'slaves', 'slaves', 'pizza'],
'Lisa plowed ': ['field', 'field', '', '', '', ''],
Run Code Online (Sandbox Code Playgroud)
我想知道每个键有多少值,而不是每个唯一值,但每个键有多少个标记,重复或不重复.所以我会得到一个结果:
John greased 5
Paul alleged 5
Tracy freed 6
Lisa plowed 2
Run Code Online (Sandbox Code Playgroud)
我试图使用它来使用下面的代码来解决它:
for key, value in sorted(result.items()):
print(key, len(value))
Run Code Online (Sandbox Code Playgroud)
但由于缺失值,所有长度都变得相同.关于如何解决这个或在哪里找到它的任何想法?非常感谢您的帮助.
我有一个看起来像一个波纹管的列表,有一对重复相同的项目.
l = (['aaron distilled ', 'alcohol', '5'],
['aaron distilled ', 'gin', '2'],
['aaron distilled ', 'beer', '6'],
['aaron distilled ', 'vodka', '9'],
['aaron evicted ', 'owner', '1'],
['aaron evicted ', 'bum', '1'],
['aaron evicted ', 'deadbeat', '1'])
Run Code Online (Sandbox Code Playgroud)
我想将它转换为字典列表,在其中我将第一项的所有重复合并为一个键,因此最终结果如下所示:
data = {'aaron distilled' : ['alcohol', '5', 'gin', '2', 'beer', '6', 'vodka', '9'],
'aaron evicted ': ['owner', '1', 'bum', '1', 'deadbeat', '1']}
Run Code Online (Sandbox Code Playgroud)
我在尝试这样的事情:
result = {}
for row in data:
key = row[0]
result = {row[0]: row[1:] for row in data} …
Run Code Online (Sandbox Code Playgroud) 我知道这很简单,但我无法弄清楚。我想将看起来像下面那个的字典列表中的所有值转换为小写:
{'John greased ': ['Axle', 'wheel', 'wheels', 'wheel', 'enGine', ''],
'Maria testa': ['teste', 'teste', '', '', '', ''],
'Paul alleged ': ['truth', 'crime', 'facts', 'infidelity', 'incident', ''],
'Tracy freed ': ['animals', 'fish', 'slaves', 'slaves', 'slaves', 'pizza'],
'Lisa plowed ': ['field', 'Field', 'FIELD', 'bola', '', '']}
Run Code Online (Sandbox Code Playgroud)
我尝试使用:
low = {k.lower():v.lower() for k, v in result.items()}
print(low)
Run Code Online (Sandbox Code Playgroud)
但它不会工作。关于如何解决这个问题的任何建议?非常感谢!