我需要一些有关Python作业的帮助。任务是使用其他词典的键和csv文件的值制作词典。所有这些都需要使用带有参数的函数来完成(另一个字典the_csv_file)
另一本字典如下:
{1: 'Bob West', 2: 'Hannah North', 3: 'Bruce South', 4: 'Anna
Bell', 5: 'George Smith'}
我从一个函数中得到了那个字典
def names_dictionary():
with open("filename.csv", 'r') as d:
x = {num+1:name.split(" ",1)[-1].strip() for (num, name)
in enumerate(d)}
print(x)
在此字典中,我需要值(名称)作为新字典中的键。
CSV文件在excel中看起来像这样
A B
1.1 11
2.3 12
3.2 14
4.7 11
5.5 12
A列中的所有内容。
从这里开始,我希望每行中的第二个数字成为新字典中的值。所以(11,12,14,11,11,12)。
我想要的结果字典是
{’Bob West’: 11, ’Hannah North’: 12, ’Bruce South’: 14, ’Anna
Bell’: 11, ’George Smith’: 12}
到目前为止的功能。
def names(names_dictionary, csvfile):
最后,我需要一个主要功能,将其放在一起并输出:
鲍勃·韦斯特(Bob West)有11根香蕉 汉娜·诺特(Hannah North)有12根香蕉 布鲁斯·南(Bruce South)得到了14根香蕉 安娜·贝尔(Anna Bell)有11根香蕉 乔治·史密斯(George Smith)有12根香蕉
答案 0 :(得分:0)
here中已经介绍了如何从csv文件读取列。
我假设您已经构建了一个值为colB
的列表[11, 12, 14, 11, 12]
。如果d
是您的原始词典,则现在可以使用词典理解
{v:colB[k - 1] for k, v in d.items()}
构造结果。
演示:
>>> d = {1: 'Bob West', 2: 'Hannah North', 3: 'Bruce South', 4: 'Anna Bell', 5: 'George Smith'}
>>> colB = [11, 12, 14, 11, 12]
>>> result = {v:colB[k - 1] for k, v in d.items()}
>>> result
{'Bob West': 11, 'Hannah North': 12, 'Bruce South': 14, 'Anna Bell': 11, 'George Smith': 12}
我确定您会自己弄清楚打印的。
答案 1 :(得分:0)
不确定到底要不要一个或两个功能。在这里,我将它们留作两个独立的功能。
import pandas as pd
#read in the file
csvfile = pd.read_csv(r'C:\Users\wrich\Desktop\data.csv')
#import the other dictionary
names_dictionary = {1: 'Bob West', 2: 'Hannah North', 3: 'Bruce South', 4: 'Anna Bell', 5: 'George Smith'}
def names(names_dictionary, csvfile):
#manipulate the file to get the values you want
csvfile = pd.DataFrame(csvfile[' A '].str.split(' ',1).tolist(), columns = ['id','value'])
myValues = list(csvfile['value'])
#output the result
result = {}
for entry in range(len(myValues)):
result[names_dictionary[entry + 1]] = myValues[entry]
return result
result = names(names_dictionary, csvfile)
def mainFunction(result):
myString = ''
for val in result.keys():
myString += val + ' got ' + str(result[val]) + ' bananas '
return myString
answer = mainFunction(result)