gpt4 book ai didi

python - 创建字典的子集,按值列表对原始字典进行排序。

转载 作者:太空宇宙 更新时间:2023-11-03 18:34:58 24 4
gpt4 key购买 nike

我正在创建一个字典(第一段代码),并且希望能够根据其值过滤掉我不需要的键,然后将其输出到 CSV。

我想要匹配的值存储在一个列表中,该列表在下面的第二个代码块中生成。

全部都是字符串,没有整数。

这是迄今为止我的代码:

#new_dict = raw_input("Enter Dictionary Name")
#source: http://bit.ly/1iOS0e3
import csv
new_dict = {}
with open(raw_input("Enter csv file (including path)"), 'rb') as f:
reader = csv.reader(f)
for row in reader:
if row[0] in new_dict:
new_dict[row[0]].append(row[1:])
else:
new_dict[row[0]] = row[1:]
print new_dict

还有列表:

#modified from: http://bit.ly/1iOS7Gu
import pandas
colnames = ['Date Added to Catalog', 'PUBMEDID', 'First Author', 'Date', 'Journal', 'Link', 'Study', 'DT', 'Initial Sample Size', 'Replication Sample Size', 'Region', 'Chr_id', 'Chr_pos', 'Reported Gene(s)', 'Mapped_gene', 'p-Value', 'Pvalue_mlog', 'p-Value (text)', 'OR or beta', '95% CI (text)', 'Platform [SNPs passing QC]', 'CNV']
data = pandas.read_csv('C:\Users\Chris\Desktop\gwascatalog.csv', names=colnames)

最佳答案

要限制添加到字典中的行,您可以创建一个名为 filter,其中包含您要保留的键。这可以从您的 pandas DataFrame 获取,例如假设您想使用 Journal CSV 字段作为键:

filter = set(data.Journal.values)

然后,您可以修改 for 循环来检查我们是否应该存储 CSV 文件中的行。这可能如下所示:

for row in reader:
if row[0] in filter:
if row[0] in new_dict:
new_dict[row[0]].append(row[1:])
else:
new_dict[row[0]] = [row[1:]]
<小时/>

根据您的评论,如果您想按行分隔记录,则需要更改行

new_dict[row[0]] = row[1:]

至:

new_dict[row[0]] = [row[1:]]

在第一种情况下,row = [1, 2, 3, 4, 5]:

my_list = row[1:]
# my_list = [2, 3, 4, 5]
my_list.append(row[1:])
# my_list = [2, 3, 4, 5, [2, 3, 4, 5]]

在第二种情况下:

my_list = [row[1:]]
# my_list = [[2, 3, 4, 5]]
my_list.append(row[1:])
# my_list = [[2, 3, 4, 5], [2, 3, 4, 5]]

关于python - 创建字典的子集,按值列表对原始字典进行排序。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21754790/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com