Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中字典的使用_Python - Fatal编程技术网

Python中字典的使用

Python中字典的使用,python,Python,我正在写一个概念学习程序,我需要将索引转换为类别名称 例如: # binary concept learning # candidate eliminaton learning algorithm import numpy as np import csv def main(): d1={0:'0', 1:'Japan', 2: 'USA', 3: 'Korea', 4: 'Germany', 5:'?'} d2={0:'0', 1:'Honda', 2: 'Chrysler'

我正在写一个概念学习程序,我需要将索引转换为类别名称

例如:

# binary concept learning
# candidate eliminaton learning algorithm
import numpy as np
import csv

def main():
    d1={0:'0', 1:'Japan', 2: 'USA', 3: 'Korea', 4: 'Germany', 5:'?'}
    d2={0:'0', 1:'Honda', 2: 'Chrysler', 3: 'Toyota', 4:'?'}
    d3={0:'0', 1:'Blue', 2:'Green', 3: 'Red', 4:'White', 5:'?'}
    d4={0:'0', 1:1970,2:1980, 3:1990, 4:2000, 5:'?'}
    d5={0:'0', 1:'Economy', 2:'Sports', 3:'SUV', 4:'?'}

    a=[0,1,2,3,4]
    print a

if __name__=="__main__":
    main()
所以[0,1,2,3,4]应该转换成['0','Honda','Green','1990','?'。做这件事的最适合的方式是什么?

你可以做:

data = [d1,d2,d3,d4,d5]
print [d[key] for key, d in zip(a, data)]
该函数可用于组合成可编辑项;本例中的列表。

您可以执行以下操作:

data = [d1,d2,d3,d4,d5]
print [d[key] for key, d in zip(a, data)]

该函数可用于组合成可编辑项;本例中的列表。

我将使用dicts d=[d1、d2、d3、d4、d5]列表,然后使用列表:

[d[i][key] for i, key in enumerate(a)]
为了使整个内容更具可读性,请使用嵌套字典-您的每一个字典似乎都代表了比d1或d2更具描述性的名称:

data = {'country': {0: 'Japan', 1: 'USA' ... }, 'brand': {0: 'Honda', ...}, ...}
car = {'country': 1, 'brand': 2 ... }
[data[attribute][key] for attribute, key in car.items()]
注意,如果这很重要的话,这不一定是有序的,尽管我认为有一个有序的字典类型

如注释所示,以连续整数作为键的字典可以替换为列表:

data = {'country': ['Japan', 'USA', ...], 'brand': ['Honda', ...], ...}

我将使用dicts d=[d1,d2,d3,d4,d5]的列表,然后使用列表:

[d[i][key] for i, key in enumerate(a)]
为了使整个内容更具可读性,请使用嵌套字典-您的每一个字典似乎都代表了比d1或d2更具描述性的名称:

data = {'country': {0: 'Japan', 1: 'USA' ... }, 'brand': {0: 'Honda', ...}, ...}
car = {'country': 1, 'brand': 2 ... }
[data[attribute][key] for attribute, key in car.items()]
注意,如果这很重要的话,这不一定是有序的,尽管我认为有一个有序的字典类型

如注释所示,以连续整数作为键的字典可以替换为列表:

data = {'country': ['Japan', 'USA', ...], 'brand': ['Honda', ...], ...}

你已经得到了直接问题的答案,但是你可能会考虑重新构造数据。对我来说,以下内容更有意义,并将使您能够更轻松地为您所要求的内容以及以后可能的任何查询编制索引:

from pprint import pprint

items = [[el.get(i, '?') for el in (d1,d2,d3,d4,d5)] for i in range(6)]
pprint(items)

[['0', '0', '0', '0', '0'],
 ['Japan', 'Honda', 'Blue', 1970, 'Economy'],
 ['USA', 'Chrysler', 'Green', 1980, 'Sports'],
 ['Korea', 'Toyota', 'Red', 1990, 'SUV'],
 ['Germany', '?', 'White', 2000, '?'],
 ['?', '?', '?', '?', '?']]

你已经得到了直接问题的答案,但是你可能会考虑重新构造数据。对我来说,以下内容更有意义,并将使您能够更轻松地为您所要求的内容以及以后可能的任何查询编制索引:

from pprint import pprint

items = [[el.get(i, '?') for el in (d1,d2,d3,d4,d5)] for i in range(6)]
pprint(items)

[['0', '0', '0', '0', '0'],
 ['Japan', 'Honda', 'Blue', 1970, 'Economy'],
 ['USA', 'Chrysler', 'Green', 1980, 'Sports'],
 ['Korea', 'Toyota', 'Red', 1990, 'SUV'],
 ['Germany', '?', 'White', 2000, '?'],
 ['?', '?', '?', '?', '?']]

如果您需要保持d1、d2等不变:

newA = [locals()["d%d"%(i+1)][a_value] for i,a_value in enumerate(a)]

非常难看、脆弱,但它应该与您现有的代码一起使用。

如果您需要保持d1、d2等的原样:

newA = [locals()["d%d"%(i+1)][a_value] for i,a_value in enumerate(a)]

非常难看、脆弱,但它应该与您现有的代码配合使用。

我认为您需要一个基本的字典速成课程:

这是一本合适的字典:

>>>d1 = { 'tires' : 'yoko', 'manufacturer': 'honda', 'vtec' : 'no' }
>>>masterdictionary['country'][1]
'germany'
您可以很容易地在字典中调用以下内容:

>>>d1['tires']
'yoko'
>>>d1['vtec'] = 'yes' #mad vtec yo
>>>d1['vtec']
'yes'
字典分为两个不同的部分,键和值

testDict = {'key':'value'}
您使用字典的方式与使用列表的方式完全相同:

>>>test = {0:"thing0", 1:"thing1"} #dictionary
>>>test[0]
'thing0'
这和我们说的差不多

>>>test = ['thing0','thing1'] #list
>>>test[0]
'thing0'
在您的特定情况下,您可能需要正确设置词典的格式,我建议使用masterdictionary={'country':['German','france','USA','japan],'manufacturer':['honda','Ferrari','hoopty']}等,因为您可以更轻松地调用您想要的每一项

用同样的字典:

>>>d1 = { 'tires' : 'yoko', 'manufacturer': 'honda', 'vtec' : 'no' }
>>>masterdictionary['country'][1]
'germany'
那是 dictionaryName['key'][iteminlistindex]


当然,没有什么可以阻止您将字典作为值放入字典中。。。。其他词典的内部值…

我认为您需要一个基本的词典速成课程:

这是一本合适的字典:

>>>d1 = { 'tires' : 'yoko', 'manufacturer': 'honda', 'vtec' : 'no' }
>>>masterdictionary['country'][1]
'germany'
您可以很容易地在字典中调用以下内容:

>>>d1['tires']
'yoko'
>>>d1['vtec'] = 'yes' #mad vtec yo
>>>d1['vtec']
'yes'
字典分为两个不同的部分,键和值

testDict = {'key':'value'}
您使用字典的方式与使用列表的方式完全相同:

>>>test = {0:"thing0", 1:"thing1"} #dictionary
>>>test[0]
'thing0'
这和我们说的差不多

>>>test = ['thing0','thing1'] #list
>>>test[0]
'thing0'
在您的特定情况下,您可能需要正确设置词典的格式,我建议使用masterdictionary={'country':['German','france','USA','japan],'manufacturer':['honda','Ferrari','hoopty']}等,因为您可以更轻松地调用您想要的每一项

用同样的字典:

>>>d1 = { 'tires' : 'yoko', 'manufacturer': 'honda', 'vtec' : 'no' }
>>>masterdictionary['country'][1]
'germany'
那是 dictionaryName['key'][iteminlistindex]


当然,没有什么可以阻止您将字典作为值放入字典中。。。。在其他字典的内部值…

这根本不需要字典。python中的列表自动支持索引

def main():

    d1=['0','Japan','USA','Korea','Germany',"?"]
    d2=['0','Honda','Chrysler','Toyota','?']
    d3=['0','Blue','Green','Red','White','?']
    d4=['0', 1970,1980,1990,2000,'?']
    d5=['0','Economy','Sports','SUV','?']
    ds = [d1, d2, d3, d4, d5] #This holds all your lists

    #This is what range is for
    a=range(5)
    #Find the nth index from the nth list, seems to be what you want
    print [ds[n][n] for n in a] #This is a list comprehension, look it up.

你根本不需要字典。python中的列表自动支持索引

def main():

    d1=['0','Japan','USA','Korea','Germany',"?"]
    d2=['0','Honda','Chrysler','Toyota','?']
    d3=['0','Blue','Green','Red','White','?']
    d4=['0', 1970,1980,1990,2000,'?']
    d5=['0','Economy','Sports','SUV','?']
    ds = [d1, d2, d3, d4, d5] #This holds all your lists

    #This is what range is for
    a=range(5)
    #Find the nth index from the nth list, seems to be what you want
    print [ds[n][n] for n in a] #This is a list comprehension, look it up.

为什么有不同的字典并使用索引作为键?每一列对应一个类别。例如,a[0]是汽车的产地,a[1]是制造商,等等……a[]是包含0,1,2,3,4的列表,它不是字典。请澄清你的问题如果你使用的是像列表或元组这样的dicts,为什么还要用dicts呢。你没有充分利用字典。检查这个dict1={'manufacturer':'honda'};dict1['manufacturer']它输出“honda”这个词,很容易记住,你不必处理令人困惑的索引!为什么有不同的字典并使用索引作为键?每一列对应一个类别。例如,a[0]表示
e car是from,a[1]是制造商,等等。a[]是包含0,1,2,3,4的列表,它不是字典。请澄清你的问题如果你使用的是像列表或元组这样的dicts,为什么还要用dicts呢。你没有充分利用字典。检查这个dict1={'manufacturer':'honda'};dict1['manufacturer']它输出“honda”这个词,很容易记住,你不必处理令人困惑的索引!不要用带数字键的字典,那太愚蠢了。这就是列表的全部要点,它本身支持数字索引。这就是原始问题中数据的存储方式。虽然是的,但在这种情况下,数据列表更有意义。把答案称为“愚蠢”没有任何帮助。好吧,对不起,这有点措辞强硬。不要使用带数字键的字典,那太愚蠢了。这就是列表的全部要点,它本身支持数字索引。这就是原始问题中数据的存储方式。虽然是的,但在这种情况下,数据列表更有意义。说一个答案愚蠢是没有任何帮助的。好吧,对不起,这有点措辞强硬。