Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.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
Python2.7 2D词汇表_Python_Dictionary - Fatal编程技术网

Python2.7 2D词汇表

Python2.7 2D词汇表,python,dictionary,Python,Dictionary,我想结果是 {'55.0':{'Index':['0','18512']},{'55.0':{'Index':['0','18513']} 但实际结果只是{'55.0':{'Index':['0','18512']} 如何修复它?您需要的是一个字典列表: Dict = {} target = [ ['55.0', 'Index', '0', '18512'], ['55.0', 'Index', '0', '18513']] for input in target: t

我想结果是
{'55.0':{'Index':['0','18512']},{'55.0':{'Index':['0','18513']}

但实际结果只是
{'55.0':{'Index':['0','18512']}


如何修复它?

您需要的是一个字典列表:

Dict = {}
target = [
    ['55.0', 'Index', '0', '18512'],
    ['55.0', 'Index', '0', '18513']]
for input in target:

    temperature, hum, out = input[0], input[1], input[2:]
    Dict.setdefault(temperature, {}).setdefault(hum, out)
print Dict
输出

但是,如果您想要一个具有两个嵌套字典的
'55.0'
键的字典
'hum:out'
,这是不可能的,因为字典可以有unqiue键,因此您的第二项将始终覆盖第一项


还有几点注意:

1.
setdefault()
非常适合在密钥不存在的情况下默认密钥的项值,但在您的用例中,由于密钥不是唯一的,因此每次都会覆盖该值,因此会适得其反。在这种特殊情况下,只需为每个项目创建一个字典,并将
append()
添加到生成的
列表中即可


2.)尽量避免使用保留关键字,如
input
dict
。尽管您已经大写了Dict
,但很容易引入错误,比如覆盖一些内置功能。Python的建议命名约定是对变量/属性使用小写和下划线,对类使用大写DWORD。这只是一个建议,你可以有自己的风格。但是,通过遵循一组一致的约定,您的代码将更易于调试。

您需要的是一个字典列表:

Dict = {}
target = [
    ['55.0', 'Index', '0', '18512'],
    ['55.0', 'Index', '0', '18513']]
for input in target:

    temperature, hum, out = input[0], input[1], input[2:]
    Dict.setdefault(temperature, {}).setdefault(hum, out)
print Dict
[{'55.0': {'Index': ['0', '18512']}}, {'55.0': {'Index': ['0','18513']}}]
输出

但是,如果您想要一个具有两个嵌套字典的
'55.0'
键的字典
'hum:out'
,这是不可能的,因为字典可以有unqiue键,因此您的第二项将始终覆盖第一项


还有几点注意:

1.
setdefault()
非常适合在密钥不存在的情况下默认密钥的项值,但在您的用例中,由于密钥不是唯一的,因此每次都会覆盖该值,因此会适得其反。在这种特殊情况下,只需为每个项目创建一个字典,并将
append()
添加到生成的
列表中即可

2.)尽量避免使用保留关键字,如
input
dict
。尽管您已经大写了Dict
,但很容易引入错误,比如覆盖一些内置功能。Python的建议命名约定是对变量/属性使用小写和下划线,对类使用大写DWORD。这只是一个建议,你可以有自己的风格。但是,通过遵循一组一致的约定,您的代码在调试时将更具可读性。

尝试将第二个“55.0”更改为其他内容,我相信您在对象上设置了相同的键。否则,请尝试使用列表而不是对象,因为您似乎想要多个结果,而不是一次将第二个“55.0”更改为其他内容,我相信您在对象上设置了相同的键。否则,请尝试使用列表而不是对象,因为您似乎想要多个结果,而不是单个结果
[{'55.0': {'Index': ['0', '18512']}}, {'55.0': {'Index': ['0','18513']}}]